我开始使用MVVMLight框架并且有关于绑定到ViewModel中的属性的问题。我发现我必须在属性的setter中调用RaisePropertyChanged方法才能更新View。我必须通过调度程序调用RaisePropertyChanged,否则我会收到线程访问错误。
public string Lat { get { return _lat; } set
{
_lat = value;
Deployment.Current.Dispatcher.BeginInvoke(() => RaisePropertyChanged("Lat"));
} }
这可以使用很多代码来获取自动绑定属性。有没有帮助者更清洁地处理这个?
答案 0 :(得分:3)
当您想要将UI元素绑定到模型类的属性时,必须提升PropertyChanged事件,而不管您是否使用MVVM Light。事实上,使用MVVM Light会更容易,因为它提供了RaisePropertyChanged方法,否则你必须自己编写代码。 :)
只有在可以从不同于UI线程的线程调用属性的set访问器时,才需要使用Dispatcher.BeginInvoke()。否则,可以直接调用RaisePropertyChanged。