WPFDataBinding 示例演示如何在 Windows Presentation Foundation (WPF) 客户端中使用数据绑定。 此示例使用 Windows Communication Foundation (WCF) 服务,该服务随机生成一组专辑以返回到客户端。 每个专辑都有一个名称、一个价格和一个专辑曲目列表。 专辑曲目具有名称和时长。 服务返回的信息会自动绑定到 Windows Presentation Foundation (WPF) 客户端提供的用户界面(UI)。
注释
本示例的设置过程和生成说明位于本主题末尾。
数据绑定允许数据源自动绑定到 UI。 这简化了编程模型,因为它不需要以编程方式使用数据对象或数据对象数组中的数据更新每个 UI 元素。 可以将对象绑定到单个 UI 元素,也可以将数组绑定到采用多个输入的控件,例如 ListBox
。 以下代码演示如何将数据 DataContext
绑定到 UI 元素。
// Event handler executed when call is complete
void client_GetAlbumListCompleted(object sender, GetAlbumListCompletedEventArgs e)
{
// This is on the UI thread, myPanel can be accessed directly
myPanel.DataContext = e.Result;
}
在前面的示例中,将名为 DataContext
的 grid
布局元素的 myPanel
设置为 GetAlbumList
方法返回的数据。 这 DataContext
允许元素从其父元素继承有关用于绑定的数据源的信息,以及绑定的其他特征(如路径)。 每次更新服务器上的数据时,都必须执行代码行。 例如,它在窗口初始化和添加新专辑时执行。
在下面的示例 XAML 代码中,ListBox
指定了 ItemsSource="{Binding }"
。
<ListBox
ItemTemplate="{StaticResource AlbumStyle}"
ItemsSource="{Binding }"
IsSynchronizedWithCurrentItem="true" />
这将指定绑定到顶级 UI 元素的数据也绑定到此控件(即唱片集数组)。 此外, ItemTemplate="{StaticResource AlbumStyle}"
指定要用于中 ListBox
每个项的数据模板。 还可以定义数据模板以指定应如何设置数据的格式。 这些数据模板可以重复使用应用程序中的其他 UI 元素,优点是数据模板在一个位置定义和维护。
AlbumStyle
数据模板并排使用两个 TextBlock
布置网格。 其中一个指定专辑的名称,另一个指定专辑中的曲目数。
<DataTemplate x:Key="AlbumStyle">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="260" />
<ColumnDefinition Width="60" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextContent="{Binding Path=Title}" />
<TextBlock Grid.Column="1" TextContent="{Binding Path=Tracks#.Count}" HorizontalAlignment="Right" />
</Grid>
</DataTemplate>
以下 XAML 代码创建第二个 ListBox
。
<ListBox Grid.Row="2"
Grid.ColumnSpan="2"
ItemTemplate="{StaticResource TrackStyle}"
ItemsSource="{Binding Path=Tracks}" />
代码指定了对于 ItemsSource
的路径。 这表示绑定到此控件的数据不是顶级数据,而是名为 Tracks
顶级数据的属性。 此属性表示专辑中包含的曲目数组。 此外,指定了名为 DataTemplate
的另一个 TrackStyle
。 模板 TrackStyle
的布局与 AlbumStyle
的布局类似,但 TextBlock
绑定到不同的属性。 这是因为这两个模板用于不同的数据对象。
设置、生成和运行示例
确保已为 Windows Communication Foundation 示例 执行One-Time 安装过程。
若要生成解决方案的 C# 或 Visual Basic .NET 版本,请按照 生成 Windows Communication Foundation 示例中的说明进行操作。
若要在单台计算机或跨计算机配置中运行示例,请按照 运行 Windows Communication Foundation 示例中的说明进行操作。