WPF学习笔记:(二)数据绑定模式与INotifyPropertyChanged接口
来源:互联网 发布:网店数据分析毕业论文 编辑:程序博客网 时间:2024/05/18 17:44
数据绑定模式共有四种:OneTime、OneWay、OneWayToSource和TwoWay,默认是TwoWay。一般来说,完成数据绑定要有三个要点:目标属性是依赖属性、绑定设置和实现了INotifyPropertyChanged接口的数据源(数据上下文)。
OneTime:一次性有效,之后数据源的变化不会对目标属性有任何影响;当然,目标属性的改变也不对数据源有影响。代码如下
<TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox1" Text="{Binding Path=MyName, Mode=OneTime}" VerticalAlignment="Top" Width="120" />
OneWay:单向作用,数据源的改变会反映到目标属性上;但目标属性的改变不对数据源有影响。代码如下:
<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:双向作用,即目标属性的改变会更新到数据源上,数据源的更新也会通知目标属性。这是绑定的默认方式,可以省略。代码如下:
<TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox4" Text="{Binding Path=MyName}" VerticalAlignment="Top" Width="120" />
到此这几种模式就介绍完了。不过,我这里还有个有趣的问题:如果数据源没有实现INotifyPropertyChanged接口,这几种模式还能正常工作吗?我做了一些尝试,得出的结论是:
1、OneTime模式根本不受影响;
2、如果在后台代码中更改了数据源,目标属性不会得到通知;
3、如果在界面上更改目标属性,数据源会收到更新通知。
不实现INotifyPropertyChanged接口的数据源到底有没有意义,以及为什麽会出现以上的现象,我还需要深入研究。
0 0
- WPF学习笔记:(二)数据绑定模式与INotifyPropertyChanged接口
- WPF中INotifyPropertyChanged用法与数据绑定
- WPF中INotifyPropertyChanged用法与数据绑定
- WPF中INotifyPropertyChanged用法与数据绑定
- WPF中INotifyPropertyChanged用法与数据绑定
- SilverLight 学习笔记--Silverlight中INotifyPropertyChanged 接口在数据绑定中的使用
- WPF学习笔记:数据绑定与DataContext
- WPF学习笔记:(一)数据绑定与DataContext
- InotifyPropertyChanged接口实现简单数据绑定
- Silverlight 实现INotifyPropertyChanged接口绑定数据
- WPF and Silverlight 学习笔记(二十):WPF数据绑定概述
- 转:WPF and Silverlight 学习笔记(二十):WPF数据绑定概述
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- WPF INotifyPropertyChanged接口
- WPF学习笔记之-WPF数据绑定
- WPF数据绑定(二)
- prism4学习笔记5:INotifyPropertyChanged接口
- WPF与MVVM的实现(二)数据绑定
- SurfaceView中lockCanvas返回值为null
- 启动模式
- android viewpager引导页+圆点详解
- SDL2.0配置说明
- python 报错:unexpected indent
- WPF学习笔记:(二)数据绑定模式与INotifyPropertyChanged接口
- C# Types
- TC怎么接入百宝云注册码系统V2
- alsa例程
- 笔面试题之 求小于N的质数中和为N的质数对
- spring jpa data 查询多对一映射
- spark学习笔记(2)spark基本概念和术语解释
- 【线性规划与网络流24题 4】魔术球
- actionbar的相关知识