WPF学习笔记:(二)数据绑定模式与INotifyPropertyChanged接口

数据绑定模式共有四种:OneTime、OneWay、OneWayToSource和TwoWay,默认是TwoWay。通常来讲,完成数据绑定要有三个要点:目标属性是依赖属性、绑定设置和实现了INotifyPropertyChanged接口的数据源(数据上下文)。blog

OneTime:一次性有效,以后数据源的变化不会对目标属性有任何影响;固然,目标属性的改变也不对数据源有影响。代码以下接口

  <TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox1" Text="{Binding Path=MyName, Mode=OneTime}" VerticalAlignment="Top" Width="120" />

OneWay:单向做用,数据源的改变会反映到目标属性上;但目标属性的改变不对数据源有影响。代码以下:class

  <TextBox Height="23" HorizontalAlignment="Left" Margin="176,83,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="{Binding Path=MyName, Mode=OneWay}" />

OneWayToSource:单向做用,跟OneWay的方向相反,目标属性的改变会更新到数据源上;但数据源的更新不会通知目标属性。在这种模式下,目标属性值初始状态通常为空,由于数据源的值对其不起做用。代码以下: 后台

  <TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox3" Text="{Binding Path=MyName, Mode=OneWayToSource}" VerticalAlignment="Top" Width="120" />

TwoWay:双向做用,即目标属性的改变会更新到数据源上,数据源的更新也会通知目标属性。这是绑定的默认方式,能够省略。代码以下:im

  <TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox4" Text="{Binding Path=MyName}" VerticalAlignment="Top" Width="120" />

到此这几种模式就介绍完了。不过,我这里还有个有趣的问题:若是数据源没有实现INotifyPropertyChanged接口,这几种模式还能正常工做吗?我作了一些尝试,得出的结论是:数据

  一、OneTime模式根本不受影响;di

  二、若是在后台代码中更改了数据源,目标属性不会获得通知;工作

  三、若是在界面上更改目标属性,数据源会收到更新通知。数据绑定

不实现INotifyPropertyChanged接口的数据源到底有没有意义,以及为什麽会出现以上的现象,我还须要深刻研究。界面

相关文章
相关标签/搜索