WPF的Binding学习笔记(一)
来源:互联网 发布:把淘宝链接转换成文字 编辑:程序博客网 时间:2024/05/16 18:58
一、binding的一般步骤
1,准备数据源
数据源需要实现INotifyPropertyChanged接口
例如:
class Person : INotifyPropertyChanged{ public event PropertyChangedEventHandler PropertyChanged; private string name; public string Name { get { return name; } set { name = value; //触发事件 if (PropertyChanged != null) { PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name")); } } }}
2,准备Binding对象
Person p = new Person("D-boy");Binding binding = new Binding();binding.Source = p;binding.Path = new PropertyPath("Name");
3,用Binding对象将数据源和目标连结
假如在XAML处添加了一个TextBlock目标
<TextBlock x:Name="txtName"></TextBlock>
那么可以使用BindingOperations.SetBinding()方法将其进行binding了。
BindingOperations.SetBinding(txtName, TextBlock.TextProperty, binding);
也可以使用UI元素的基类FramworkElement封装的SetBinding函数
txtName.SetBinding(TextBlock.TextProperty, binding);
将上面两步结合在一起可以这样写
txtName.SetBinding(TextBlock.TextProperty, new Binding("Name") { Source=p});
二、控件间的Binding
XAML处如下两个控件
<TextBox x:Name="txt1" /><TextBlock x:Name="txt2" Text="{Binding Path=Text, ElementName=txt1}" />
如果要改变Binding源的触发事件,可以设置Binding的UpdateSourceTrigger属性为LostFocus、Explicit、PropertyChanged中的一种。
三、Binding的Path
1,Path的设置
如上例,
XAML处为
<TextBlock x:Name="txt2" Text="{Binding Path=Text, ElementName=txt1}" />
或是
<TextBlock x:Name="txt2" Text="{Binding Text, ElementName=txt1}" />
相应的C#代码为
txt2.SetBinding(TextBlock.TextProperty, new Binding(){ Path=new PropertyPath("Value"),Source=txt1});
或是
txt2.SetBinding(TextBlock.TextProperty, new Binding("Text") { Source=txt1});
之类的...
2,Path还支持一路点下去~~
比如
<TextBlock x:Name="txt2" Text="{Binding Text.Length, ElementName=txt1}" /><TextBlock x:Name="txt2" Text="{Binding Text.[2], ElementName=txt1}" />
3,当数据源本身就是数据的时候,Path为.
window添加命名空间
xmlns:sys="clr-namespace:System;assembly=mscorlib"
添加资源
<Window.Resources> <sys:String x:Key="string"> string!!!!! </sys:String></Window.Resources>
使用Binding
<TextBlock x:Name="txt2" Text="{Binding ., Source={StaticResource ResourceKey=string}}" />
精简为
<TextBlock x:Name="txt2" Text="{Binding Source={StaticResource ResourceKey=string}}" />
当然这样的情况,我就直接
<TextBlock x:Name="txt2" Text="{StaticResource ResourceKey=string}" />
-_- !
0 0
- WPF的Binding学习笔记(一)
- WPF的Binding (path)学习笔记(一)
- WPF学习之Binding的学习(一)
- WPF的Binding学习笔记(二)
- WPF的Binding学习笔记(三)
- WPF的Binding学习笔记(二)
- WPF的Binding学习笔记(三)
- WPF中Binding的技巧(一)
- WPF中Binding的技巧(一)
- WPF中Binding的技巧(一)
- WPF的Binding基础(一)
- wpf的binding学习记录
- WPF 学习笔记 - 8. Binding (1)
- WPF 学习笔记 - 9. Binding (2)
- WPF 学习笔记 - 10. Binding (3)
- WPF 学习笔记 - 11. Binding (4)
- WPF 学习笔记 - 12. Binding (5)
- WPF 学习笔记 - 8. Binding (1)
- CareerCup An in-place algorithm for String Transformation
- string stringBuffer stringBuilder
- struts2的最少的5个核心jar包
- NOIP2002提高组 均分纸牌
- Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)
- WPF的Binding学习笔记(一)
- 图像显示和流媒体播放点解
- linux下常用FTP命令 1. 连接ftp服务器
- 关于srandom和random
- 24. 微软面试题:整数的二进制表示中1的个数
- Android 循环ListView
- 机器学习中的lazy method与eager method的比较
- 有序数组合并问题
- 在Struts 2.0中国际化(i18n)您的应用程序