绑定到非元素对象

上篇文章写了如何绑定到元素,这里介绍从不可见对象中提取数据的绑定表达式。唯一的要求是希望显示的信息必须存储在公有属性中。WPF数据绑定基础结构不能获取私有信息或公有字段。
Source属性:最简单的选择是将Source属性指向一些已经准备好了的静态对象。例如,可在代码中创建一个静态对象并使用改对象。或者,可以使用来自.NET类库的组件。

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

这个绑定表达式获取由静态属性SystemFonts.IconFontFamily提供的FontFamily对象,然后将Binding.Path属性设置为FontFamily.Source属性,该属性给出了字体家族的名称。
另一种选择是绑定到先前作为资源创建的对象。

<Window.Resources>
<FontFamily x:key="CustomFont">Calibri</FontFamily>
</Window.Resources>
<!-- 下面的TextBlock元素会绑定到该资源   -->
<TextBlock Text="  Binding  Source={ StaticResource CustomFont },Path=Source "/>

DataContext属性
如果没有使用Source和RelativeSource属性指定源,WPF就从当前元素开始在元素树中向上查找,检查每个元素的DataContect属性,并使用第一个非空的DataContextt属性。
在某些情况下,会将大量元素绑定到同一个对象。

<StackPanel DataContext=" {X:Static SystemFonts.IconFontFamily} " />
<TextBlock Text=" { Binding Path=Source  } "/>

当在绑定表达式中省略信息源时,WPF会检查元素的DataContext属性。如果属性值为null。WPF会继续向上在元素树中查找第一个不为null的数据上下文,找到并绑定。
注意:如果使用Source属性创建明确标识源的绑定,元素就会使用源而不会使用可能得到的数据上下文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值