转自;http://blog.csdn.net/lisenyang/article/details/18312199

1.控件与控件间的双向绑定

WPF还支持控件作为数据源,

 <TextBox Name="txt_Source" Width="" HorizontalAlignment="Left"></TextBox>
<TextBox Text="{Binding ElementName=txt_Source,Path=Text}" Name="txt_Target" Width="" HorizontalAlignment="Left">

上面代码就可以实现控件之间的双向绑定,我们发现我们的绑定数据源不是Source,而是ElementName.

当然我们也可以使用代码来实现

 Binding binding = new Binding("Text") { Source = this.txt_Source };
this.txt_Target.SetBinding(TextBox.TextProperty, binding);

使用代码绑定我们依然使用的Source来绑定数据源

2.多级路径

WPF支持多级路径,也就是我们通俗的说“点”下去。

我们改下上面的代码

 Binding binding = new Binding("Text.Length") { Source =this.txt_Source,Mode = BindingMode.OneWay };
this.txt_Target.SetBinding(TextBox.TextProperty, binding);

注意:因为源数据和目标数据无法做到匹配,所以无法双向绑定。

我们可以看到我们绑定的数据是Text属性中的Length属性,这就是我们所谓的多级路径.

3.索引绑定

我们知道,集合类型是索引器(Indexer)又称为带参属性。既然是属性,索引器也能作为Path来使用,比如我们想让一个TextBox显示另外一个TextBox的第1个字符

 Binding binding = new Binding("Text[1]") { Source =this.txt_Source,Mode = BindingMode.OneWay };
this.txt_Target.SetBinding(TextBox.TextProperty, binding);

4.集合绑定

当使用一个集合或者DataView做为数据源时,如果我们想把它默认的元素做为数据源使用,则需要使用下面的语法:

  List<string> list = new List<string>() { "狗娃","狗剩2"};
txt_List1.SetBinding(TextBox.TextProperty, new Binding("/") { Source = list, Mode = BindingMode.OneTime });
txt_List2.SetBinding(TextBox.TextProperty, new Binding("/[1]") { Source = list,Mode = BindingMode.OneTime });
txt_List3.SetBinding(TextBox.TextProperty, new Binding("/Length") { Source = list, Mode = BindingMode.OneTime });

效果如下

如果想要绑定绑定第二个元素,则直接使用"点"即可

  List<string> list = new List<string>() { "狗娃","狗剩2"};
txt_List1.SetBinding(TextBox.TextProperty, new Binding("[1]") { Source = list, Mode = BindingMode.OneTime });
txt_List2.SetBinding(TextBox.TextProperty, new Binding("[1].[1]") { Source = list,Mode = BindingMode.OneTime });
txt_List3.SetBinding(TextBox.TextProperty, new Binding("[1].Length") { Source = list, Mode = BindingMode.OneTime });

如果想把子集集合中元素作为Path,可以使用多级斜线方法(一路"斜线"下去);

我们创建一个省市区关系的类型

 public  class Province
{
public string Name { get; set; }
public IList<City> Citys { get; set; }
}
public class City
{
public string Name { get; set; }
public IList<District> Districts { get; set; }
}
public class District
{
public string Name { get; set; }
}

然后我们使用多级斜线进行绑定

  List<Province> list = new List<Province>()
{
new Province
{
Name ="河北",
Citys = new List<City>
{
new City
{
Name = "邯郸",
Districts = new List<District>{ new District { Name="邯山区"} }
} } } };
txt_List1.SetBinding(TextBox.TextProperty, new Binding("/Name") { Source = list, Mode = BindingMode.OneTime });
txt_List2.SetBinding(TextBox.TextProperty, new Binding("/Citys/Name") { Source = list, Mode = BindingMode.OneTime });
txt_List3.SetBinding(TextBox.TextProperty, new Binding("/Citys/Districts/Name") { Source = list, Mode = BindingMode.OneTime });

当然也可以使用多级"点"进行绑定

 txt_List1.SetBinding(TextBox.TextProperty, new Binding("[0].Name") { Source = list, Mode = BindingMode.OneTime });
txt_List2.SetBinding(TextBox.TextProperty, new Binding("[0].Citys[0].Name") { Source = list, Mode = BindingMode.OneTime });
txt_List3.SetBinding(TextBox.TextProperty, new Binding("[0].Citys[0].Districts[0].Name") { Source = list, Mode = BindingMode.OneTime });

WPF Binding学习(三)的更多相关文章

  1. WPF项目学习.三

    工具代码记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 分页控件的制作,邮件发送,日志代码,excel导入导出等代码的实现过程: 二 ...

  2. WPF Binding学习(二)

    Binding作为数据的桥梁,连通业务逻辑层的对象(源对象)和UI的控件对象(目标对象).在这座桥梁上,我们不仅可以控制在源对象与目标对象是双向通行还是单向通行.还可以控制数据的放行时机,甚至可以在这 ...

  3. WPF Binding学习(四) 绑定各种数据源

    转自:http://blog.csdn.net/lisenyang/article/details/18312199 1.集合作为数据源 首先我们先创建一个模型类 public class Stude ...

  4. WPF样式学习三

    SnapsToDevicePixels 获取或设置在呈现过程,该值来确定呈现此元素是否应使用特定于设备的像素设置. 这是一个依赖项属性. true ,如果元素应以符合呈现到设备像素;否则, false ...

  5. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  6. WPF之Binding的三种简单写法

    环境 类代码 public class Person:INotifyPropertyChanged { private string name; public string Name { get { ...

  7. 【WPF】学习笔记(三)——这个家伙跟电子签名板有个约定

    这篇博客依旧是以电子签名板为基础而展开的,主要是对前文([WPF]学习笔记(一)--做一个简单的电子签名板)存在的部分问题进行解释,以及部分小功能的添加.由于这篇博客是建立在学习笔记一的基础上的,所以 ...

  8. WPF项目学习.二

    WPF用MVVM的解决记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案.  焦点的控制,键盘事件触发,输入框的数字限制,异步处理,隐藏状 ...

  9. Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)

    jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...

随机推荐

  1. openEntityForm如何给关于(regardingobjectid)类型查找字段赋值?

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复264或者20170924可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  2. 「Android」GreenDao

    译文 版本:greenDAO 3.2.2 官网:http://greenrobot.org/greendao/ GitHub:https://github.com/greenrobot/greenDA ...

  3. uni-app 子组件如何调用父组件的方法

    1.在父组件methods中定义一个方法: changeType:function(type){ this.typeActive = type; alert(type); } 2.在父组件引用子组件时 ...

  4. Nginx 安装与部署配置以及Nginx和uWSGI开机自启

    下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放 ...

  5. linux 环境变量设置

    sudo gedit ~/.bashrc source ~/.bashrc

  6. Windows7安装Bitvise开启ssh服务

    Windows7安装Bitvise开启ssh服务 by:铁乐猫 在Liunx和windows10上配置SSH服务是一件很容易的事,毕竟系统己经自带了ssh的服务功能. 不过在windows7上可不容易 ...

  7. 虚拟机备份,部署VDP

    VDP是一个基于磁盘的备份和恢复解决方案,可靠且易于部署.VDP这一经过更新的备份设备完全取代了VMware原有的备份架构.而且VDP与VMware vCenter Server 完全集成,可以对备份 ...

  8. 比较两个List是否相等,长度和内容都相等

    /** *list中存在重复数据,且顺序不一样*/import java.util.ArrayList; import java.util.Collections; import java.util. ...

  9. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...

  10. Nmap参考指南(Man Page)

    Table of Contents 描述 译注 选项概要 目标说明 主机发现 端口扫描基础 端口扫描技术 端口说明和扫描顺序 服务和版本探测 操作系统探测 时间和性能 防火墙/IDS躲避和哄骗 输出 ...