原文 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.
    
  2. BindingExpression binding = txtFontSize.GetBindingExpression(TextBox.TextProperty);
    
  3. // Update the linked source (the TextBlock).
    
  4. 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. 从数据库读取数据后显示成html标签

    也许很多人从数据库中读的数据是不需要数据成html标签的,但是也许有一天你们会发现当我们需要输出成html标签时编译器却自动帮我们输出成字符串了这是我们可以这样来 方法1: 最常用的方法,使用JS或J ...

  2. SQL Server 日志文件增长原因定位

    方法 1.sys.databases; -------------------------------------------------------------------------------- ...

  3. python学习day12

    目录 html结构与标签 css样式   html结构之head <head> 标签用于定义文档的头部,它是所有头部元素的容器.<head> 中的元素可以引用脚本.指示浏览器在 ...

  4. KeybMap 键盘映射工具更新至 V1.5(修订)

    KeybMap 更新至 V1.5,主要是增加了对一些多媒体键定义修改功能,也可以将任意一键定义为打开指定的程序. 3月9日略做修订. http://www.mympc.org/down/1/2005- ...

  5. mac系统奔溃无法启动时,如何备份重要资料

    虽然说苹果系统以稳定性获得高度好评,但是作为一名程序员,还是要考虑到系统奔溃的情况. 当遇到系统奔溃,无法启动,而我们还没有备份电脑里面的重要资料,这时候不用着急.可以用下面的 方法来拯救你的苹果电脑 ...

  6. Iterator(迭代器模式)--(超市管理者)

    这个Iterator就是收银台干的活. package patterns.actions.iterator; public interface IteratorList { boolean isEmp ...

  7. 《面试题精选》15.O(logn)求Fibonacci数列

    题目:定义Fibonacci数列例如以下: /    0                      n=0 f(n)=      1                      n=1          ...

  8. Mvc4.0添加商品到Cookie

    /// <summary> /// 添加Cookie /// </summary> /// <param name="gc">GoodsToCo ...

  9. 《JavaScript 闯关记》之初探

    当学习一门新的编程语言的时候,应该边学边做,反复演练以加深理解.因此,你需要一个 JavaScript 解释器.幸运的是,每一个 Web 浏览器都包含一个 JavaScript 解释器. 可以通过在 ...

  10. Zepto.js touch模块深入分析 解决手机点击事件

    源码: // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT li ...