赞
踩
获取或设置控件元素的数值,需要 INotifyPropertyChanged接口。这个接口是为了发出属性更改的通知,即实现了这个接口将会实现当源对象的公共属性发生改变时,该属性的值会立即响应到界面上显式,或者获取界面的数据。
本质上是使数据的改变刷新到UI或UI控件的改变更新到数据。
Source | 指向源对象的引用,即提供数据的对象。一般都是指定的。 |
RelativeSource | 使用RelativeSource对象指定绑定源的相对位置,默认值为null。 |
DataContext | 如果没有使用Source或RelativeSource属性指定一个数据源,WPF会从当前元素开始在元素树中向上查找。检查每个元素的DataContext属性,并使用第一个非空的DataContext属性。 |
更改TextBox后的数据,TextBlock跟随更新。通过一个数据Name关联。
- public class PersonNP:INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
-
- private string name;
- public string Name
- {
- get { return name; }
- set { name = value; Notify(); }
- }
-
- private void Notify([CallerMemberName]string obj ="")
- {
- if (PropertyChanged != null)
- {
- this.PropertyChanged (this, new PropertyChangedEventArgs(obj));
- }
- }
- }
- <TextBox Text="{Binding Path=Name,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox>
- <TextBlock Text="{Binding Path=Name}"></TextBlock>
实例化或前台指定,选其一。详细参考:DataContext。
- private PersonNP pNP;
- public MainWindow()
- {
- InitializeComponent();
- pNP = new PersonNP
- {
- Name = "test"
- };
- this.DataContext = pNP; //DataContext设置
- }
- <Window.DataContext>
- <local:PersonNP Name="test"/>
- </Window.DataContext>
- <Grid>
- <StackPanel>
- <TextBox Text="{Binding Path=Name,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox>
- <TextBlock Text="{Binding Path=Name}"></TextBlock>
- </StackPanel>
- </Grid>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。