WPF程序设计指南: Binding(数据绑定)[下]
2010-12-21 14:20
393 查看
注:一下内容及代码基本来自Charles Petzold著,蔡学庸译,电子工业出版社出版的《Windows Presentation Foundation 程序设计指南》一书
引言:在上一篇WPF: Binding(数据绑定)[上]中所提到的Binding,都是使用ElementName Property来设置数据源的,这一篇将叙述如何通过Binding的另外两个属性:Source和RelativeSource来设定绑定源(注意:这三个属性只能设置一个,否则会冲突),以及“如何让数据可以当作绑定源”和“如何在格式化转换源数据”
例如,System.Globalization命名空间中的DateTimeFormatInfo类型的DayNames属性(非静态),它返回一个字符串数组,是一周中每一天的名字。其中DateTimeFormatInfo类本身提供的一个静态属性:DateTimeFormatInfo.CurrentInfo,返回一个DateTimeFormatInfo类型的实例,表示当前计算机设置的文化的时间信息。
代码
代码说明:
(1)第一个和第二个绑定分别获取当前TextBlock自己的字体类型和大小
(2)第二个绑定显示当前TextBlock所在的stackpanel的Orientation属性值
(3)第二个绑定显示当前TextBlock所在的stackpanel所在的stackpanel的Orientation属性值
引言:在上一篇WPF: Binding(数据绑定)[上]中所提到的Binding,都是使用ElementName Property来设置数据源的,这一篇将叙述如何通过Binding的另外两个属性:Source和RelativeSource来设定绑定源(注意:这三个属性只能设置一个,否则会冲突),以及“如何让数据可以当作绑定源”和“如何在格式化转换源数据”
1. Binding一个对象的静态字段或者静态属性
在前面的一篇文章:WPF:Resource中我们知道,获取一个类型的静态字段或者静态属性的时候,我们可以使用x:Static获得,但是当我们需要获取一个某一个对象的静态字段或者属性,这时候我们就需要用到绑定。例如,System.Globalization命名空间中的DateTimeFormatInfo类型的DayNames属性(非静态),它返回一个字符串数组,是一周中每一天的名字。其中DateTimeFormatInfo类本身提供的一个静态属性:DateTimeFormatInfo.CurrentInfo,返回一个DateTimeFormatInfo类型的实例,表示当前计算机设置的文化的时间信息。
代码
<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" TextBlock.FontSize="12" > <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> <TextBlock Text="This TextBlock has a FontFamily of " /> <TextBlock Text="{Binding RelativeSource={RelativeSource self}, Path=FontFamily}" /> <TextBlock Text=" and a FontSize of " /> <TextBlock Text="{Binding RelativeSource={RelativeSource self}, Path=FontSize}" /> </StackPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> <TextBlock Text="This TextBlock is inside a StackPanel with " /> <TextBlock Text= "{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}}, Path=Orientation}" /> <TextBlock Text=" orientation" /> </StackPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> <TextBlock Text="The parent StackPanel has " /> <TextBlock Text= "{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}, AncestorLevel=2}, Path=Orientation}" /> <TextBlock Text=" orientation" /> </StackPanel> </StackPanel>
代码说明:
(1)第一个和第二个绑定分别获取当前TextBlock自己的字体类型和大小
(2)第二个绑定显示当前TextBlock所在的stackpanel的Orientation属性值
(3)第二个绑定显示当前TextBlock所在的stackpanel所在的stackpanel的Orientation属性值
相关文章推荐
- WPF程序设计指南: Binding(数据绑定)[上]
- WPF程序设计指南第24张样式中DataTrigger中使用绑定的例子
- WPF程序设计指南:Resource
- WPF/Silverlight的数据绑定设计的真糟糕
- 29.wpf程序设计指南[第二章]渐变画刷
- [WPF系列]-DataBinding(数据绑定) 自定义Binding
- WPF MultiBinding 给数据目标赋值后绑定无效的问题
- WPF数据绑定(一):ListView + BindingList实现列表数据绑定
- DevExpress WPF入门指南:跟随 Items Source 向导完成数据绑定
- WPF程序设计指南:XAML
- 使用Blend来为WPF程序制作Textbox数据绑定效果
- WPF程序设计指南第四章FormatTheButton例子效果
- 【转载】wpf数据绑定binding与INotifyPropertyChanged
- WPF数据绑定(2 绑定列表数据Binding to List Data)
- WPF/Silverlight2.0 Binding(数据绑定)机制详解
- WPF 数据绑定 定制一个集合的视图 数据提供程序
- WPF程序设计指南第23章数据绑定第一个例子,我修改了下,更能直接看出效果和区别
- WPF程序设计指南第21章中资源共享说明
- 38 WPF 程序设计指南 RadialGradientBrush
- c#--wpf数据绑定binding