wpf 实现INotifyPropertyChanged
示例
INotifyPropertyChanged是绑定源(即DataContext)使用的接口,以使用户界面或其他组件知道属性已更改。WPF在看到PropertyChanged事件引发时会自动为您更新UI。最好在所有视图模型都可以继承的基类上实现此接口。
在C#6中,这就是您所需要的:
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}这使您可以通过NotifyPropertyChanged两种不同的方式进行调用:
NotifyPropertyChanged(),这要归功于调用它的setter的事件,这要归功于CallerMemberName属性。
NotifyPropertyChanged(nameof(SomeOtherProperty)),这将引发SomeOtherProperty的事件。
对于使用C#5.0的.NET4.5及更高版本,可以代替使用:
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged([CallerMemberName] string name = null)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}在4.5之前的.NET版本中,必须将属性名称设置为字符串常量或使用表达式的解决方案。
注意:可以绑定到未实现的“普通C#对象”(POCO)的属性,INotifyPropertyChanged并观察到绑定的工作比预期的要好。这是.NET中的隐藏功能,应避免使用。特别是因为它会导致内存泄漏时绑定的Mode不是OneTime(见这里)。
为什么在不实现INotifyPropertyChanged的情况下进行绑定更新?
热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短