我希望这不是一个愚蠢的问题:我刚开始使用MVVM灯(到目前为止爱它!)。在“之前的时间”(即在使用MVVML之前),我不得不发送任何代码,这些代码会触及在其中引发INotifyPropertyChanged事件的属性设置器。
我(错误地?)认为使用MVVMlight时需求会消失。
我仍然要使用它,对吗?我的实验告诉我一个响亮的是。
所以,这是真正愚蠢的部分 - 因为需要在某处初始化MVVML dispatcherhelper类,我假设它保存了UI线程,为什么不让RaisePropertyChanged调用自动执行Dispatch?这似乎是常见的事情吗?
本身并不是批评,更多的是“它怎么会以这种方式起作用”: - )
修改 (从作者的评论中复制)
FWIW,我这样做了:
public class QViewModelBase : ViewModelBase {
protected override void RaisePropertyChanged(string propertyName) {
DispatcherHelper.CheckBeginInvokeOnUI( () => base.RaisePropertyChanged(propertyName));
}
protected override void RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast) {
DispatcherHelper.CheckBeginInvokeOnUI( () => base.RaisePropertyChanged<T>(propertyName, oldValue, newValue, broadcast));
}
}
答案 0 :(得分:1)
请参阅我的回答:Thread safe, Silverlight
我强烈推荐你的建议。
答案 1 :(得分:1)
IMO你根本不需要派遣! 只有ObservableCollection上的操作需要调度。