gpt4 book ai didi

wpf - 数据绑定(bind)是否始终编码到 UI 线程?

转载 作者:行者123 更新时间:2023-12-02 04:27:13 27 4
gpt4 key购买 nike

绑定(bind)到 Silverlight 3 和 4 中的属性时,Windows Phone 7 版本 silverlight 以及 WPF 3.5 和 4 中的属性更改通知是否始终编码到 UI 线程?您是否知道我不能依赖它并且必须在我的代码中进行编码的任何情况?

最佳答案

我做了一些实验...

  1. INotifyPropertyChanged
    如果您从后台线程对属性进行更改,并且它从该后台线程触发 INotifyPropertyChanged,并且该属性是数据绑定(bind)的,那么...

    • WPF:它可以工作(即数据绑定(bind)器将其编码(marshal)到 UI 线程)
    • Silverlight5 和 WinRT:失败(即数据绑定(bind)程序未编码(marshal))
    • 电话:我认为它与 Silverlight 相同,但没有尝试过。
  2. 依赖属性
    如果该属性是依赖属性而不是 INotifyPropertyChanged 怎么办?如果您从后台线程更改此属性会怎样?嗯,我没有做过任何实验,但我读到它不进行任何编码。

  3. INotifyCollectionChanged(例如 ObservableCollection)
    如果您从后台线程添加/删除 ObservableCollection 中的元素,并且该集合通过数据绑定(bind)到列表框或类似的内容,那么会发生什么?

    • WPF:从 WPF4.5 开始,您可以使用 BindingOperations.EnableCollectionSynchronization(collection, new object());它会正确编码。然而,在WPF4.5之前,正如Pavlo所说。
    • Silverlight、WinRT:再次与 Pavol 所说的相同。

关于wpf - 数据绑定(bind)是否始终编码到 UI 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4678340/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com