当前位置:   article > 正文

WPF INotifyPropertyChanged

wpf inotifypropertychanged

简介:

      获取或设置控件元素的数值,需要 INotifyPropertyChanged接口。这个接口是为了发出属性更改的通知,即实现了这个接口将会实现当源对象的公共属性发生改变时,该属性的值会立即响应到界面上显式,或者获取界面的数据。

     本质上是使数据的改变刷新到UI或UI控件的改变更新到数据。

 

介绍:

Source指向源对象的引用,即提供数据的对象。一般都是指定的。
RelativeSource使用RelativeSource对象指定绑定源的相对位置,默认值为null。
DataContext如果没有使用Source或RelativeSource属性指定一个数据源,WPF会从当前元素开始在元素树中向上查找。检查每个元素的DataContext属性,并使用第一个非空的DataContext属性。

 

 使用:

更改TextBox后的数据,TextBlock跟随更新。通过一个数据Name关联。

1.接口 

  1. public class PersonNP:INotifyPropertyChanged
  2. {
  3. public event PropertyChangedEventHandler PropertyChanged;
  4. private string name;
  5. public string Name
  6. {
  7. get { return name; }
  8. set { name = value; Notify(); }
  9. }
  10. private void Notify([CallerMemberName]string obj ="")
  11. {
  12. if (PropertyChanged != null)
  13. {
  14. this.PropertyChanged (this, new PropertyChangedEventArgs(obj));
  15. }
  16. }
  17. }

 

2.数据与控件绑定

  1. <TextBox Text="{Binding Path=Name,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox>
  2. <TextBlock Text="{Binding Path=Name}"></TextBlock>

 

3.DataContext设置

实例化或前台指定,选其一。详细参考:DataContext

  1. private PersonNP pNP;
  2. public MainWindow()
  3. {
  4. InitializeComponent();
  5. pNP = new PersonNP
  6. {
  7. Name = "test"
  8. };
  9. this.DataContext = pNP; //DataContext设置
  10. }

 

  1. <Window.DataContext>
  2. <local:PersonNP Name="test"/>
  3. </Window.DataContext>
  4. <Grid>
  5. <StackPanel>
  6. <TextBox Text="{Binding Path=Name,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox>
  7. <TextBlock Text="{Binding Path=Name}"></TextBlock>
  8. </StackPanel>
  9. </Grid>

 

结果:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/567820
推荐阅读
  

闽ICP备14008679号