何为数据绑定
在WPF技术中控件基类(FrameworkElement、FrameworkContentElement)中DataContext属性实现了绑 定机制,在XAML中也支持此机制。当一个控件的DataContext发生变化时,其子控件的DataContext也会继 承父控件的DataContext(前提是这个子控件没有另外赋值)。子控件的属性获取数据源中的数据,支持 XAML通过Binding标记获取数据源中的值。数据源更新时刷新其每个子控件中的数据更新,实现一呼百应 的效果!
Binding绑定标记
XAML处理器支持绑定机制的语法,以{Binding PropertyName=Value}格式出现。其中PropertyName基 本分为“数据源指定标记、读取数据源标记、附加选项标记”,Value可以使用其它标记获取特殊的值。 绑定表达式中可以使用数据源标记、读取数据源标记、附加选项标记组合使用,也可以使用父控件绑定数 据源,子控件继承父控件的数据源并进行绑定。
语法
<TextBox Name="theTextBox" />
<TextBlock Text="{Binding ElementName=theTextBox, Path=Text}"/>
同于
<TextBox Name="theTextBox" />
<TextBlock>
<TextBlock.Text>
<Binding ElementName="theTextBox" Path="Text" />
</TextBlock.Text>
</TextBlock>
数据源指定标记
Source属性:通过其它扩展标记制定任何类型的对象实例为数据源,可以使用StaticResource等标记 设置。例如:“{Binding Source={StaticResource xKeyElement}, XPath=//item}”,xKeyElement是 XMLDataProvider的对象,意思是获取以xKeyElement中所有以item为标签节点的数据为数据源。
ElementName属性:制定当前XAML文档中任何以(x:Name)名称为ElementName值的对象为数据源。例如 :“{Binding ElementName=ListBox1, Path=SelectedItem}”,意思是把ListBox1的SelectedItem属性 为当前控件的数据源。
RelativeSource属性:相对数据源,使用RelativeSource可以制定与自身相关联的对象为数据源。例 如:“RelativeSource={RelativeSource Self}}”,读者注意“中间的是RelativeSource{}是一个扩展 标记,而外面的RelativeSource={}是Binding标记的属性”。这段实例代码的意思是获取自身为数据源。