这个senerio是否有效?WPF MVVM更新后台工作人员的视图模型
我有一个View来维护一个Item。
我有视图模型公开Item对象(实现INotifyPropertyChanged)作为视图被绑定到的属性。
对我来说,将Item对象传递给BackgroundWorker进行修改,然后在BackgroundWorking完成时引发PropertyChanged事件对我有效?
或者BackgroundWorker不应该修改Item对象。我会用BackgroundWorker传回的结果更新现有的Item对象。这将在RunWorkerCompleted事件中完成。但是,这是否锁定了UI线程并击败了具有backgound工作者的对象?
困惑?
我会尽力解释。
用户可以选择创建一个项目。我创建了视图和视图模型。在View模型中,创建一个空的Item对象。他会看到一个视图来维护该项目。在选择物品类型属性时,这会激发一个复杂的过程来创建用户输入的物品清单。我可以在创建列表时阻止UI线程,但这会给用户带来不好的体验。我想将处理传递给后台线程,同时保持UI活着。目前,我设置了一个标志来指示正在加载视图的部分,将Item对象传递给更新可观察属性集合的BackgroundWorker。当BackgroundWorking完成时,我调用PropertyChanged事件,该事件更新绑定到列表的View部分并关闭标志以指示部分正在加载。这似乎没有问题。但我有一种直觉,我不应该在后台线程中更新视图模型的绑定对象。
谢谢蒂姆
WOW,超快速回复谢谢。你可以通过调度操作来解释你的意思吗? – Tim 2011-03-04 16:35:51
@Tim:对不起,我的英语。我的意思是调用UI-Thread的调度程序的操作。调度员将在右侧(UI)线程中安排执行操作。 http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.aspx – HCL 2011-03-04 16:44:19
谢谢,只是运行测试,事实上我得到一个错误。将调查。 – Tim 2011-03-04 17:08:32