在WPF应用程序中,我需要以特定的时间间隔刷新所有组件的UI。 我需要知道什么是最简单的方法。
我的问题:如何提升OnPropertyChanged?
你知道更好的approch吗?
如果可能,请提供代码示例,谢谢
namespace MyClient.Common
{
public abstract class BindableBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected bool SetProperty<T>(ref T storage, T value, /*[CallerMemberName]*/ String propertyName = null)
{
if (object.Equals(storage, value)) return false;
storage = value;
this.OnPropertyChanged(propertyName);
return true;
}
protected void OnPropertyChanged(/*[CallerMemberName]*/ string propertyName = null)
{
var eventHandler = this.PropertyChanged;
if (eventHandler != null)
{
eventHandler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
答案 0 :(得分:1)
绝对最好的方法是不要刷新控件:-)正如我看到你已经实现了INotifyPropertyChanged接口,你实现一个简单的MVVM模式并不太远。如果您这样做,用户界面将自动更新视图模型中的事件,并且您的控件应该始终是最新的。
这是关于如何开始使用MVVM的许多参考资料之一:http://www.markwithall.com/programming/2013/03/01/worlds-simplest-csharp-wpf-mvvm-example.html
我自己刚刚穿过同一个jurney,一旦掌握了它,我就意识到这一切是多么干净和美好。
在某些情况下,您必须手动调用OnPropertyChanged,例如,如果从其他成员或外部因素推断出属性。然后你只需要调用OnPropertyChanged(“PropertyName”)。