原文 http://www.cnblogs.com/SouthAurora/archive/2010/06/30/1768464.html

一。绑定到元素对象

1。元素和元素(XAML、代码)

1.1XAML格式

目标属性="{Binding ElementName=源控件, Path=源属性, Mode=…}"

1.2代码:

Binding binding = new Binding(); 
         binding.Source = 源控件; 
         binding.Path = new PropertyPath("Value");    //源控件属性
         binding.Mode = BindingMode.TwoWay; 
         lblSampleText.SetBinding(TextBlock.FontSize, binding); 绑定。

1.3 演示程序…

二。绑定到非元素对象(Source/RelativeSource/DataContext)。

1。Source

1.1绑定到静态对象

FontSize="{Binding Source={x:Static 静态对象},

Path=静态对象的属性}

或者  Title="{x:Static 命名空间:静态类.属性}"

1.2绑定到资源。

FontFamily="{Binding Source={StaticResource 资源名称},

Path=资源对象的属性}"

演示例子…

2。RelativeSource:根据当前对象为基础,自动查找源并绑定。

2.1  ="{Binding RelativeSource=

{RelativeSource Mode=FindAncestor,

AncestorType={x:Type Window}},

Path=Title}"

2.2 RelativeSourceMode枚举值

名 称

描 述

Self

表达式绑定到同一元素的另外一个属性上(在第10

章介绍了这一技术的一个示例,其中使用该技术在

触发命令的控件中显示与命令相关联的文本)

FindAncestor

表达式绑定到父元素。WPF将会查找元素树直到发

现期望的父元素。为了指定父元素,还必须设置

AncestorType属性指示希望查找的父元素的类型。

此外,还可以使用AncestorLevel属性略过发现的一

定数量的特定元素。例如,当在一棵树中查找时,

如果希望绑定到第三个ListBoxItem类型的元素,

应当进行如下设置:AncestorType={x:Type ListBoxItem},

并且AncestorLevel=3,所以会略过前两个ListBoxItem

元素。默认情况下,AncestorLevel属性设置为1,

并且在找到第一个匹配的元素时停止查找

PreviousData

表达式绑定到数据绑定列表中的前一个数据项。

在一个列表项中会使用这种模式

TemplateParent

表达式绑定到应用模板的元素。只有当绑定位于一

个控件模板或数据模板内部时,这种模式才能工作

3。DataContext

所有的子对象可以共享一个绑定源。

父对象 = DataContext="{Binding ElementName=wndBindingType}"

子对象 = FontSize="{Binding Path=绑定源的一个属性}"

三。绑定的方向

BindingMode枚举值

名 称

描 述

OneWay

当源属性变化时更新目标属性

TwoWay

当源属性变化时更新目标属性,

并且当目标属性变化时更新源属性

OneTime

最初根据源属性值设置目标属性。然而,

在此之后的所有改变都会被忽略(除非绑定

被设置到一个完全不同的对象或者调用

BindingExpression.UpdateTarget( )方法,

如在本章后面所介绍的那样)。通常,如果

知道源属性不会变化,可以使用这种模式降低开销

OneWayToSource

和OnWay类型类似,但是方向相反。当目标

属性变化时更新源属性(这看起来有点像向后传递),

但是目标属性永远不会被更新

Default

这种类型的绑定依赖于目标属性。它既可以

是双向的(对于用户可以设置的属性,如

TextBox.Text属性),也可以是单向的(对于

所有其他属性)。除非明确指定了另外一种模式,

否则所有的绑定都使用该模式

方向:

图16-5  绑定两个属性的不同方向

5。重要类

5.1 BindingOperations:清楚绑定、设置绑定、获取绑定表达式

5.2 BindingExpression:UpdateSource( )方法和UpdateTarget( )方法。

5.2.1 获取

隐藏行号 复制代码 ? 这是一段程序代码。
    1. // Get the binding that's applied to the text box.
    1. BindingExpression binding = txtFontSize.GetBindingExpression(TextBox.TextProperty);
    1. // Update the linked source (the TextBlock).
    1. binding.UpdateSource();

5.3“x:Static” 根据目标对象的类型,从静态对象、属性中取值。返回值:对象/数值。

6。总结:

属性值更改需要实现:INotifyPropertyChanged

集合更改(添加删除)需要实现:INotify CollectionChanged

元素到元素的绑定依赖于依赖的属性,注册依赖属性时的属性值变更通知。

四。自定义类

1。更新实现

1.1属性依赖属性

1.2INotifyPropertyChanged

五集合绑定

ItemsControl类中用于数据绑定的属性(唯一的要求是支持IEnumerable接口)

名 称

描 述

ItemsSource

指向一个集合,该集合包含所有在列表中显示的对象

DisplayMemberPath

标识一个用于为每个项创建显示文本的属性

ItemTemplate

接受一个数据模板,用于为每个项创建可视化外观。

这个属性比DisplayMemberPath属性的功能更加强大,

ItemsControl(ListBox控件、ComboBox控件以及ListView控件(以及Menu控件和用于显示层次化数据的TreeView控件))。

二。值转换器。

IValueConverter接口的类

转换绑定的数据

<Binding Path="Code">

<Binding.Converter>

<local:PriceConverter></local:PriceConverter>

</Binding.Converter>

</Binding>

三。数据模板的使用

 数据模板通常会被应用到以下几类控件来填充其类型为DataTemplate的属性:

  ·     内容控件(Content Control):ContentTemplate属性,控制Content的显示

  ·     项控件(Items Control) : ItemTemplate属性,应用于每个显示的项

  ·     头控件(Header Content Control) : HeaderTemplate属性,控制Header的展现。

四。视图

1。过滤

2。排序

3。分组

五。数据提供程序

1。绑定到一个实例上

1.ObjectDataProvider可以绑带构造函数带参数的对象。

2。可以绑定到方法

<local:BQItems x:Key="BQs"/>
<ObjectDataProvider x:Key="dataProviderBQ"
                    ObjectInstance="{StaticResource BQs}">
</ObjectDataProvider>

<ObjectDataProvider x:Key="dpHasParameter" ObjectType="{x:Type local:BQItems}">
    <ObjectDataProvider.ConstructorParameters>
        <sys:Int32>23</sys:Int32>
    </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>

WPF学习:绑定的更多相关文章

  1. 【WPF】最近在学习wpf 的绑定,,

    最近在学习wpf 的绑定,,1.简单的说就是版前端和后端用自己的方法给分开了2.baseVm 模型 baseCmd 命令3.命令传参修改的只是界面里的属性,而不修改其它的值4.前端改变后端, 后端改变 ...

  2. WPF学习(二) - 绑定

    绑定,这个看起来很神奇的东西,于我这种喜欢刨根儿的人而言,理解起来非常困难.    WPF绑定的核心思想是:数据层属性值的改变,能反应给展示层,反之亦然,并且这个响应的过程能被分离出来. 传统Winf ...

  3. WPF学习之资源-Resources

    WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过Resour ...

  4. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  5. WPF学习(8)数据绑定

    说到数据绑定,其实这并不是一个新的玩意儿.了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定.那么,在WPF中的数据绑定相比较传统的asp.net中 ...

  6. WPF学习资源整理

    WPF(WindowsPresentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的编程模型 ...

  7. WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决

    原文:WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决 如下图,在凭证编辑窗体中,有的单元格不需要数字,但如果录入数字后再删除,会触发数字验证,单元格显示红色框线,导致不能执行 ...

  8. WPF学习12:基于MVVM Light 制作图形编辑工具(3)

    本文是WPF学习11:基于MVVM Light 制作图形编辑工具(2)的后续 这一次的目标是完成 两个任务. 本节完成后的效果: 本文分为三个部分: 1.对之前代码不合理的地方重新设计. 2.图形可选 ...

  9. WPF学习11:基于MVVM Light 制作图形编辑工具(2)

    本文是WPF学习10:基于MVVM Light 制作图形编辑工具(1)的后续 这一次的目标是完成 两个任务. 画布 效果: 画布上,选择的方案是:直接以Image作为画布,使用RenderTarget ...

  10. WPF学习09:数据绑定之 Binding to List Data

    从WPF学习03:Element Binding我们可以实现控件属性与控件属性的绑定. 从WPF学习07:MVVM 预备知识之数据绑定 我们可以实现控件属性与自定义对象属性的绑定. 而以上两个功能在实 ...

随机推荐

  1. Python成长之路_装饰器

    一.初入装饰器 1.首先呢我们有这么一段代码,这段代码假设是N个业务部门的函数 def f1(aaa): print('我是F1业务') if aaa == 'f1': return 'ok' def ...

  2. openwrt 新版IPV6问题

    我的版本是r45579,表现是路由认证后正确获取IPV6地址并且可以ping通外网,电脑可以获取地址但是连不上外网. 加一条转发规则就好了 先查看/etc/config/network里给电脑分配的地 ...

  3. USB interrupt传输和isochronous传输的区别

    一直没理解USB的iso传输和interrupt传输的区别. 后来仔细看了下USB2.0 SPEC后才明白. interrupt传输和iso传输,都是等时的传输,也就是某个时间间隔发送一次. 区别在于 ...

  4. 深入理解MFC子类化

    子类化,通俗来讲就是用自己的窗口处理函数来处理特定消息,并将自己其他消息还给标准(默认)窗口处理函数.在SDK中,通过SetWindowLong来指定一个自定义窗口处理函数:SetWindowLong ...

  5. Seek the Name, Seek the Fame(Kmp)

    Seek the Name, Seek the Fame Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (J ...

  6. MS SQL 当记录不存在时插入insert INTO not exists

    INSERT INTO dbo.[T_DabaoTemp]  ([PType]           ,[pID]           ,[NewVersion]           ,[ParentC ...

  7. Cassandra - Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

    In cassandra 2.1.4, if you run "nodetool status" without any keyspace specified, you will ...

  8. Map笔记总结

    Map :存储的是键值对,一对一对出现的,要保证键的唯一性. Map常见的三个子类.1.HashTable 底层是哈希表结构,不能存在null的情况.该集合是线程同步的.效率低此类实现一个哈希表,该哈 ...

  9. 整理HTML的一些基础

    HTML,超文本标记语言(HyperText Markup Language) 超文本:指页面内可以包含图片.链接.音乐.程序等非文字元素 标记:页面的由各种标签(标记)组成,文本有隐藏的文本标签 H ...

  10. DOM事件对象

    触发DOM上的事件时会产生一个事件对象event. event的内容:与事件有关的信息,导致事件的元素,事件的类型及其他与特定事件相关的信息. event对象会传入到事件处理程序中. 一.DOM 中的 ...