我已经通过缓慢的UI更新解决了一些问题,并且我想听听解释为什么我的代码修改实际上可以提高性能。
我开发了WPF应用程序MVVM体系结构。我在视图模型中有一个属性:
public DateTime MyDate
{
get
{
return _myDate;
}
set
{
_myDate= value;
OnPropertyChanged()
OnPropertyChanged(() => MyDateFormatted);
}
}
MyDateFormatted看起来如下:
public string MyDateFormatted
{
get { return _myDate.ToString("MMMM dd, yyyy"); }
}
MyDate的设置程序不会在UI线程上发生。MyDateFormatted的获取方法发生在UI线程上,因为,正如我所读到的那样,WPF自动将对UI线程的属性更改编组。
确保在MVVM WPF应用程序的UI线程上调用OnPropertyChanged()
确实,UI已更新,但是非常缓慢。一次,我手动附加了OnPropertyChanged(()=> MyDateFormatted); 到UI Dispacher,通过将其与调用:Application.Current.Dispatcher包围在一起,UI可以立即按我想要的速度进行更新,并且性能得到了极大的改善。你能解释为什么吗?谢谢!
喵喵时光机
相关分类