就像我们在最开始的"Hello,world!"例子中一样,我们通过一个"Hello,bound world!"例子来展示使用数据绑定是多么简单。现在就让我们跳进这个例子来看看:
<Window x:Class="WpfTutorialSamples.DataBinding.HelloBoundWorldSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="HelloBoundWorldSample" Height="110" Width="280">
<StackPanel Margin="10">
<TextBox Name="txtValue" />
<WrapPanel Margin="0,10">
<TextBlock Text="Value: " FontWeight="Bold" />
<TextBlock Text="{Binding Path=Text, ElementName=txtValue}" />
</WrapPanel>
</StackPanel>
</Window>
上面的例子展示了如何把TextBlock的值绑定到TextBox的文本属性里。就像截屏所示,TextBlock会在你将文字输入到TextBox之后自动更新。如果没有数据绑定,这里就需要监听一个TextBox事件,每次文字改变都触发一次。有了数据绑定,就可以通过使用标记来建立这种关联了。
绑定语法
数据绑定发生在花括号之间,这是XAML封装的一个标记扩展。对于数据绑定,我们使用Binding扩展,允许我们描述Text属性的绑定关系。大部分格式如下:
{Binding}
返回当前的数据。这个非常有用,但是大部分情况下,你希望把一个属性绑定到另外一个属性。那么就需要如下的格式:
{Binding Path=NameOfProperty}
Path指示了你要绑定到什么地方。Path是绑定的是一个默认属性,如果你希望的话,也可以写成如下格式:
{Binding NameOfProperty}
你会看到很多不同的例子,有的Path完整显示,有的被舍去,完全由你决定。
绑定还有其他属性,其中有一个叫ElementName的属性,是上面的例子用到的。它允许我们直接作为源关联到另外一个UI元素中。绑定中每一个属性都用一个逗号来隔开:
{Binding Path=Text,ElementName=txtValue}
总结
以上是WPF数据绑定中的一小部分内容,下一章,我们将探索更多内容,来展示数据绑定有多么强大。