学习WPF——元素绑定

概念

从源对象提取一些信息,并用这些信息设置目标对象的属性

示例



在给TextBlock控件的FontSize属性赋值时,我们使用了绑定表达式

数据绑定表达式使用XAML的标记扩展(因此具有花括号)(参见:)

这里创建了一个System.Windows.Data.Binding对象,所以绑定表达式以单词binding开头

在本例中只设置了Binding对象的两个属性ElementName和Path属性


ElementName

指定源元素

Path

指定源元素中的属性

Mode

OneWay:

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

TwoWay:

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

OneTime:

最初根据源属性值设置目标属性,其后的所有改变都会被忽略

OneWayToSource:

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

Default:

根据目标属性的设置而定


UpdateSourceTrigger

如果我们把一个属性的值绑定到一个文本框的Text上,那么只有当这个文本框失去焦点时才会更新目标属性的值;如果你想实时更新目标属性的值该如何处理呢?那么这时就要设置UpdateSourceTrigger属性了,这个属性有一下几种可能的情况

PropertyChange:

当目标属性发声变化时立即更新

LostFocus:

当目标属性发生变化,并且目标失去焦点时更新

Explicit:

除非调用BindingExpression.UpdateSource()方法,否则无法更新源

Default:

根据目标属性的设置来确定更新行为,大多数元素都是PropertyChange设置,但TextBox.Text属性是LostFocus设置


Delay

有的时候需要延迟一段时间再更新目标属性的值,此时需要设置Delay属性,单位是毫秒

Source
绑定到非元素对象;与ElementName互斥
该属性指向源对象的引用(就是提供数据的对象)
以下代码可以绑定到已经存在的对象

以下代码可以绑定到已经存在的资源

RelativeSource

绑定到非元素对象;与ElementName互斥

Self:

表达式绑定到同一元素的另一属性上

FindAncestor:

表达式绑定到父元素

PreviousData:

绑定到数据列表中的前一个数据项,应用在数据列表元素中

TemplateParent:

绑定到应用模版的元素,在模版内这种设置才生效

说明

除了绑定到元素的属性,还可以绑定到元素的属性的属性或者存在索引器的属性

比如:

MyElement.Property.OtherProperty

MyElement.Property[2]


当绑定到格式不正确的元素属性上时,WPF并不会因此而编译不通过

双向绑定比单向绑定开销更大,OneTime绑定比双向绑定和单向绑定的开销都小

尽量使用明确的绑定模式,而不要使用Default绑定模式

源属性改变,通知到目标属性后,目标属性还可以作为源属性,通知下一个目标属性,这就是多绑定

使用代码创建绑定

在上面的示例中完全可以使用C#代码创建绑定

代码如下

使用代码删除绑定

如果像通过代码删除某一个元素的绑定,可以通过下面两种方式完成

使用代码检索绑定

可以使用如下方式获取一个元素的绑定对象

使用DataContext绑定

可以先对父元素设置DataContext属性,然后在子元素中就可以轻松的使用父元素设置的DataContext所指向的对象了

修改记录

2015-1-5:完成一部分内容

参考资料

《Pro WPF 4.5 in C# 4th Edition》

时间: 2024-11-04 23:42:06

学习WPF——元素绑定的相关文章

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

最近在学习wpf 的绑定,,1.简单的说就是版前端和后端用自己的方法给分开了2.baseVm 模型 baseCmd 命令3.命令传参修改的只是界面里的属性,而不修改其它的值4.前端改变后端, 后端改变前端要用的的函数 PropertyChanged 延伸出来的 OnProperyChanged 再延伸出来的 SetProperty5.前端和后端的分离,Interaction triggers in WPFhttp://www.cnblogs.com/lynn-/p/3262658.html <i

WPF元素绑定

原文:WPF元素绑定 数据绑定简介:数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性.目标属性是依赖项属性.源对象可以是任何内容,从另一个WPF元素乃至ADO.NET数据对象(如DataTable)或自行创建出数据对象.绑定用的是Binding类的一个实例,用的名称空间是:System.Windows.Data: 1.绑定表达式. 数据绑定表达式使用的是XAML标记扩展(因此具有花括号),用到的是System.Windows.Data.Bingding类的

WPF 元素绑定

1.什么是数据绑定数据绑定是一种关系,WPF程序从源对象中提取一些信息,并根据这些信息设置目标对象的属性,目标属性作为依赖项属性.源对象可以是任何内容,可以是另一个wpf内容,甚至是自行创建的纯数据对象. 2.简单的单绑定 将一个元素绑定到另一个元素,第一个例子,是将将一个Slider控件和TextBlock控件绑定.ElementName表示源对象的名字,Path表示源元素的属性.需要使用花括号括起来. <Grid> <Slider Name="sliderFontSize&

【WPF学习】第二十九章 元素绑定——将元素绑定到一起

原文:[WPF学习]第二十九章 元素绑定--将元素绑定到一起 数据banding的最简单情形是,源对象时WPF元素而且源属性是依赖性属性.前面章节解释过,依赖项属性具有内置的更改通知支持.因此,当在源对象中改变依赖项属性的值时,会立即更新目标对象中的绑定属性.这正是我们所需要的行为--而且不必为此构建任何额外的基础结构. 为理解如何将一个元素绑定到另一个元素,下面创建一个简单的示例.该示例窗口包含了两个控件:一个Slider控件和一个具有单行文本的TextBlock控件.如果向右拖动滑动条上的滑

【WPF学习】第三十章 元素绑定——绑定到非元素对象

原文:[WPF学习]第三十章 元素绑定--绑定到非元素对象 前面章节一直都在讨论如何添加链接两个各元素的绑定.但在数据驱动的应用程序中,更常见的情况是创建从不可见对象中提取数据的绑定表达式.唯一的要求是希望显示的信息必须存储在公有属性中.WPF数据绑定数据结构不能获取私有信息或公有字段. 当绑定到非元素对象时,需要放弃Binding.ElementName属性,并使用以下属性中的一个: Source:该属性是指向源对象的引用--换句话说,是提供数据的对象. RelativeSource:这是引用

WPF学习系列之六 (元素绑定)

元素绑定 简单地说,数据绑定是一种关系,该关系告诉WPF从一个源对象提取一些信息,并使用这些信息设置目标对象的属性.目标属性总是依赖属性,并且通常位于WPF元素中. 一.将元素绑定到一起 <Window x:Class="StudyWPF.元素绑定"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schem

WPF元素的绑定

一.两个元素的简单绑     WPF元素的绑定,是指将两个控件绑在一起,比如利用滑动条Slider,改变刻度时,相应的标签元素中的字体的大小就会增加. 这种元素的绑定,要知道谁是目标元素,谁是源元素.比如用滑动条的刻度大小去绑定标签元素中的字体的大小.这里面滑动条的刻度就是源元素,标签字体大小就是目标元素. 在标签元素中字体大小的属性中就可以去直接绑定,绑定语句是: FontSize="{Binding ElementName=slider1,Path=Value} 解释:Binding Ele

WPF:元素绑定

到目前为止都在讨论如何链接两个元素的绑定.但在数据驱动的应用程序中,更常见的情况是创建从不可见的对象中提取数据绑定表达式.唯一的要求是希望显示的信息必须存储在公有的属性中.WPF数据绑定基础结构不能获取私有信息或共有字段. 当绑定到非元素对象时,需要放弃Binding.ElementName属性,并使用一下属性中的一个: Source:该属性是指向源对象的引用---换句话说,是提供数据的对象. RelativeSource:这是引用,使用RelativeSource对象指向源对象.有了这个附加层

跟着杨中科循序渐进学习wpf(全)

第一季 C#编程基础 1.用C#编写一个10+20=?的小程序: public static voidMain(tring[] args) { int i1=10; int i2=20; int i3=i1+i2; Console.WriteLine(i3);           //也可用占位符来实现:Console.WriteLine("{0}+{1}={2}",i1,i2,i1+i2);在输出参数较多时候要用占位符 Console.ReadKey();