我正在尝试了解WPF绑定。尽可能简单:
我有一个具有公共uint Prop1的ClassWithProperty。
主窗口有一个公共的ClassWithProp对象,并将其用于数据上下文。这是在主Windows的构造函数中设置的:
this.ClassWithProp = new ClassWithProp();
this.DataContext = this.ClassWithProp;
ClassWithProp的默认构造函数将Porp1值设置为1。
主窗口包含标签:
<Label Content="{Binding Prop1}" ... />
它还包含一个按钮,当单击时,将ClassWithProp.Prop1设置为2.
当窗口首次出现时,标签会正确显示1.单击该按钮时,属性的值将更改为2,但标签不会刷新。
抱歉 - 可能很明显,但我是WPF的新手:
为什么未定义属性更改时绑定标签不会更新?
答案 0 :(得分:2)
同时阅读the overview,它可能回答了人们对数据绑定的90%以上的问题。
答案 1 :(得分:2)
您的ClassWithProperty
需要实现INotifyPropertyChanged接口(其中只有一个事件,PropertyChanged),这样WPF绑定子系统可以监听属性更改并更新值。更改属性的值后,将引发该事件。
以下是一个例子:
pulic class ClassWithProperty : INotifyPropertyChanged
{
public uint Prop1
{
get { return _prop1; }
set
{
_prop1 = value;
OnPropertyChanged("Prop1");
}
}
protected void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
private uint _prop1;
}