Binding就是将数据源和目标联系起来,一般来说可以是将逻辑层对象和UI层的控件对象相关联。
有连接就有通道,就可以在通道上建立相应的验证等关卡来验证数据有效性,或是其它处理工作;同时它也支持对数据的传输方向控制。
那么,它是如何去实现的呢?Binding是通过自动侦听接口的PropertyChanged事件;因此,数据源对象就要实现INotifyPropertyChanged接口,并引发一个PropertyChanged事件,通知Binging更新了属性,那么相应的目标也做更新。
触发事件:
public class Student : INotifyPropertyChanged
{
...
set{
...
if (PropertyChanged != null)
{
this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));
}
...
}
...
public event PropertyChangedEventHandler PropertyChanged;
}
设置Binding:
C#:this.textBox1.SetBinding(TextBox.TextProperty, new Binding("Value") { ElementName = "slider1" });
XAML: <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="87,73,0,0" TextWrapping="Wrap" Text="{Binding Value,ElementName=slider1}" VerticalAlignment="Top" Width="342"/>
或 Text="{Binding Path=Value,ElementName=slider1}"
- if (PropertyChanged != null)
- {
- this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));
- }