WPF的Binding学习笔记(一)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/20/2732427.html
一、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}" />
WPF的Binding学习笔记(一)的更多相关文章
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- ArcGIS API for Silverlight/WPF 2.1学习笔记(一)——精简版
一.安装 1.Visual Studio: (1)Visual Studio 2010或Visual Web Developer Express 2010 (2)Silverlight 4 Tools ...
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(四)
七.Editing ArcGIS Server 10提供了: 通过feature service,在Web上编辑Feature layers的geographic data的功能. 通过geome ...
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(五)
2.Find示例代码 (1)xaml文件: //添加Symbol命名空间 xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbol ...
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(一)
源自:http://blog.163.com/zwx_gis/blog/static/32434435201122193611576/ (主页:http://blog.163.com/zwx_gis/ ...
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
在第二十三节,我们使用CollectionView实现了对于绑定数据的导航,除导航功能外,还可以通过CollectionView对数据进行类似于DataView的排序.筛选等功能. 一.数据的排序: ...
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(三)
六.Feature Layer Feature Layer是一种特殊的Graphics layer(继承自Graphics layer),除了像Graphics layer一样包含和显示Graphic ...
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(二)
五.Graphics layer 1.新增Graphics layer Graphics layer用于显示用户自定义绘制的点.线.面图形.使用时确保xaml文件中Graphics layer定义 ...
- [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?
[译]聊聊C#中的泛型的使用(新手勿入) 写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...
随机推荐
- SQL Server 2008教程和Microsoft® SQL Server® 2008 R2 SP2 - Express Edition下载
教程 SQL Server 2008 Tutorialhttp://www.quackit.com/sql_server/sql_server_2008/tutorial/ 数据库下载 Microso ...
- Maven学习(一) -- 安装Maven及Eclipse中配置Maven
标签(空格分隔): 学习笔记 本文环境:Windows7, JDK1.7.0_76 安装及配置Maven环境变量 需要电脑中已经有Java环境 在控制台中输入:echo %JAVA_HOME%看是否能 ...
- Struts2拦截器初涉
Struts2拦截器初涉 正在练习struts,本例是从一个pdf上摘抄的例子,那本pdf都不知道叫什么名字,不过感觉很适合初学者. 在这里要实现一个简单的拦截器"GreetingInter ...
- Statement returned more than one row, where no more than one was expected
Statement returned more than one row, where no more than one was expected <resultMap id="Stu ...
- Android TextView自动换行文字排版参差不齐的原因
今天项目没什么进展,公司后台出问题了.看了下刚刚学习Android时的笔记,发现TextView会自动换行,而且排版文字参差不齐.查了下资料,总结原因如下: 1.半角字符与全角字符混乱所致:这种情况一 ...
- 笔记本_Lenovo_G480
ZC: 这是 严g 的笔记本 1.进入 BIOS --> F2键 2.安装 WinServer2003时,蓝屏 2.1.Win2003的PE(不太明白 这里的PE指什么...)不支持 AHCI ...
- Design pattern---观察者模式
观察者模式:发布/订阅模式,当某对象(被观察者)状态发生改变时所有订阅该对象的观察者对象(观察者)都将更新自己 成员(4种): 1.抽象被观察者:将所有的观察者对象的引用存入一个集合,并且定义了添加 ...
- oracle的存储过程和函数(PL/SQL)
czmmiao 存储过程概述 存储过程是子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库.是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出.一个存储过程通 ...
- linux笔记:用户和用户组管理-用户配置文件
用户信息文件(/etc/passwd): 影子文件(/etc/shadow) 组信息文件(/etc/group)和组密码文件(/etc/gshadow):
- MySQL SQL
SQL语句错误: Column count doesn't match value count at row 1 列计数与第1行的值计数不匹配 You have an error in your SQ ...