【发布时间】:2014-01-12 13:53:33
【问题描述】:
WPF 框架是否会自动获取 UI 中 INotifyPropertyChanged 派生类型到 Bindings 的更新?
还是我必须手动完成?
【问题讨论】:
标签: c# wpf inotifypropertychanged
WPF 框架是否会自动获取 UI 中 INotifyPropertyChanged 派生类型到 Bindings 的更新?
还是我必须手动完成?
【问题讨论】:
标签: c# wpf inotifypropertychanged
如果你正确实现INotifyPropertyChanged,它是自动的。
【讨论】:
半手动:-)
当您实现“INotifyPropertyChanged”时,您将实现那些方法(通常实现相同)
#region INotifyPropertyChanged
protected void RaisePropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null) { PropertyChanged(this, e); }
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
之后,当您的某个属性发生更改时,您需要使用更改的属性名称调用“RaisePropertyChanged”。通常在该属性的设置器中
【讨论】:
INotifyPropertyChanged 的 实现 是(作为任何实现,包括依赖属性的实现)手动,但是从 INotifyPropertyChanged 实现类型“获取更新”与获取更新一样自动来自具有依赖属性的DependencyObject。
是的,它是半手动的,
string _tText;
public string Text
{
get { return _tText; }
set
{
_tText = value;
OnPropertyChanged("Text");
}
}
一旦属性设置了某个值,这里的属性就会更改显示调用。 OnPropertyChanged("Text");
【讨论】:
INotifyPropertyChanged 的事件。
INotifyPropertyChanged接口的实现,我提到了属性改变的方式。