首页 > 其他 > 详细

绑定到非元素对象学习笔记

时间:2015-09-24 16:20:41      阅读:133      评论:0      收藏:0      [点我收藏+]

昨天学习了元素对象之间的单向绑定、双向绑定等,今天开始学习将元素绑定到非元素对象。

元素绑定到元素需使用Binding.ElementName属性指定源,而绑定到非元素对象则使用下面几个属性:

Source:该属性是指向源对象的引用-换句话说就是Object,但该Object中必须有公开的属性。

RelativeSource:使用RelativeSource对象指向源对象(编程宝典这里有单词错误)。

DataContext:在结构树中向上查找每个元素的DataContext属性,并使用第一个非空的DataContext属性。

Source属性

直接绑定算是比较简单,可以使用数据对象、资源作为绑定对象,例如:

<TextBlock Text="{Binding Source={x:Static SystemFonts.IconFontFamily},Path=Source}"></TextBlock>

<Window.Resources>
    <FontFamily x:Key="CustomFont">Calibri</FontFamily>
</Window.Resources>
<TextBlock Text="{Binding Source={StaticResource CustomFont},Path=Source}">

第一段代码直接绑定到静态对象,第二段代码绑定到了创建的资源。

 

RelativeSource属性

这种绑定有几种不同的模式

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

FindAncestor:表达式绑定到父元素,但必须指定期望绑定的父类型

还有PreviousData、TemplateParent模式。

示例:

<TextBlock Text="{Binding Path=Title,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type window}}}"></TextBlock>

这段绑定表达式首先指明绑定到的属性为Title,期望的父类型为window,执行这段代码时就在当前的树形结构中逐个向上查找父元素,直到判断父元素类型为window为止,并绑定到该元素Title属性。

 

DataContext属性

这个属性我理解的也算是很透彻了,按照我的想法,在项目中维护信息时这种绑定方式应该用的比较多,举个例子:

修改员工信息的界面有好多TextBox需要绑定到员工数据对象,如果每个TextBox要写一遍绑定那是要累死的节奏,如果使用DataContext则就可以只在这些TextBox的父元素(StackPanel)中指定员工数据对象,TextBox只需指定绑定Path就可以了。

关于数据绑定的基础概念就先学习到这里了,下一步开始学习命令。

绑定到非元素对象学习笔记

原文:http://www.cnblogs.com/zhkai/p/4835439.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!