书上写着:Binding的源也就是数据的源头。Binding对于源的要求很简单-只要他是一个对象!并且通过属性(Property)公开自己的数据,它就可以作为Binding的源了。就像上一篇我写的那个Student类,它的实例对象就可以作为Binding的源,数据的内容是它的属性Name。

实际使用过程中,我们可以把控件自己或者控件的子级元素或者控件的自己的容器当成源,一个控件作为另一个控件的源,集合作为ItemsControl的数据源,XML、作为TreeView或者menu的数据源,把多个控件关联到一个数据制高点,甚至干脆不给Binding指定数据源,让它自己去找。

当我们遇到这样一种情况,通过一个滚动条来控制TextBox显示的值,当TextBox的值改变滚动条跳到对应的位置去,这个模型很常见,那么我们自己写一个这样的功能的时候会怎样做呢?方法当然很多,比如通过触发两个控件的Changed事件来操作等等,那我们既然在学习Binding,就是用它来解决这个问题。

滚动条Slider是用来控制显示的值,所以它的Value是一个Binding的源,TextBox的Text属性则是这个源的目标。

代码如下:

<Window x:Class="Wpf_test1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="" Width="">
<StackPanel>
<TextBox x:Name="textbox1" Text="{Binding Path=Value, ElementName=Slider1}" BorderBrush="Black"></TextBox>
<Slider x:Name="Slider1" Maximum="" Minimum=""></Slider>
</StackPanel>
</Window>

Maximum和Minimum是指定Value的范围,注意TextBox的Text=“{Binding Path=Value, ElementName=Slider1}”和我们平常写的Text=“value”不同,它的意思是把Slider的Value值Binding给TextBox的Text去。

执行结果:

当我们在TextBox里面输入一个数字,如何让Slider跳到相应位置去呢?

很简单,在Binding之后加上 UpdateSourceTrigger=PropertyChanged,当源的目标发生改变,更新源数据!是不是很方便。

有人可能会这样写:

 <TextBox x:Name="textbox1" Text="{Binding Value, ElementName=Slider1, UpdateSourceTrigger=PropertyChanged}" BorderBrush="Black"></TextBox>

没有写Path也是对的,因为Binding构造器本身可以接受Path作为参数。

按照上一篇最后的方法,XAML这一句Binding在后台可以写成如下:

this.textbox1.SetBinding(TextBox.TextProperty,new Binding("Value"){ElementName="Slider1"})

说到这里,不得不说说Path=Value这句话,Binding源的对象可能有许多属性,而Path正是决定了Binding关心的是哪一个属性。实际上Path所对应的是一个叫做PropertyPath的类型,比如Text.Length、Text.[2]等。

当Binding的源是一个集合或者DataView的时候,如果我们把它的默认元素当成Path的话。。。可以使用多级/语法,自己去MSDN看吧~

Binding的源和路径的更多相关文章

  1. Binding的Path(路径)

    Binding的源可以是控件(一个控件是另一个控件的Source.控件把自己的容器作为Source),把集合作为ItemsControls的Source,把xml作为Tree或者Menu的Source ...

  2. 获得数据源和路径desc.catalogPath

    workspace:C:\Users\dell\Documents\ArcGIS\Default.gdb\ddf inPath:c:\users\dell\documents\arcgis\defau ...

  3. WPF之Binding深入探讨

    原文:http://blog.csdn.net/fwj380891124/article/details/8107646 1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在 ...

  4. WPF的Binding功能解析

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  5. WPF之Binding的使用

    引出: 在WPF中Binding可以比作数据的桥梁,桥梁的两端分别是Binding的源(Source)和目标(Target).一般情况下,Binding源是逻辑层对象,Binding目标是UI层的控件 ...

  6. WPF之Binding深入探讨--Darren

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  7. 深入浅出WPF之Binding的使用(一)

    在WPF中Binding可以比作数据的桥梁,桥梁的两端分别是Binding的源(Source)和目标(Target).一般情况下,Binding源是逻辑层对象,Binding目标是UI层的控件对象:这 ...

  8. binding(转)

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  9. WPF之Binding【转】

    WPF之Binding[转] 看到WPF如此之炫,也想用用,可是一点也不会呀. 从需求谈起吧: 首先可能要做一个很炫的界面.见MaterialDesignInXAMLToolKit. 那,最主要的呢, ...

随机推荐

  1. 如何用 PHPMailer 来发送邮件?

    <?php require_once('mantisbt-1.2.15/library/phpmailer/class.phpmailer.php'); $mail= new PHPMailer ...

  2. 【转】Centos配置yum源

    转载自:http://blog.chinaunix.net/uid-23683795-id-3477603.html 网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的 ...

  3. linux云计算集群架构学习笔记:workstation 12.0 按装Red Hat Enterprise Linux 7(64位)

    安装RHEL7.2 步骤: 1.安装虚拟机,按以下截图安装即可  步骤2: Ret hat 7.2 操作系统安装 rhel7因为许可报错解决

  4. PowerShell 批量增加ACL

    $serviceName="云服务名称"$vmName="虚拟机名称"$endPoint="终结点名称"$acl=New-AzureAclC ...

  5. CentOS7.0下载各版本说明 新增Everything版

    来源:http://www.centoscn.com/CentOS/2014/0708/3268.html 下载CentOS-7.0-1406的时候,有很多可选则的版本,对于初学者来说,不知道选择哪个 ...

  6. 快递查询api(多接口方案)

    /** 本环境使用php+smarty,结合两种快递api调取快递数据 * 说明,先快递鸟调取数据,失败后再调取快递网的数据* 快递鸟 http://www.kdniao.com 快递网 http:/ ...

  7. highcharts 24小时显示数据,显示00:00格式的数据

    Showing 24 hours on xAxis WITHOUT a date on 00:00 格式参考PHP手册中的: strftime

  8. Sql的实际应用

    sql实际应用-递归查询   1.既然要谈到sql,数据库表是必须的   2.数据结构     3.获取某个节点的所有子节点     传统的写法(sql2000) 很麻烦,暂且就不写了     来看看 ...

  9. C#学习笔记15:字符串、文件、目录的操作方法

    字符串:不可变性 String str=”abcdf”; 将字符串转换为char数组:ToCharArray(); Char[] ch=str.ToCharAarray(); 将char数组转换为字符 ...

  10. HW--漂亮度

    描述 给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和.每个字母都有一个“漂亮度”,范围在1到26之间.没有任何两个字母拥有相同的“漂亮度”.字母忽略大小 ...