首页 > 代码库 > [WPF系列]-数据邦定之DataTemplate 对分层数据的支持

[WPF系列]-数据邦定之DataTemplate 对分层数据的支持

到目前为止,我们仅讨论如何绑定和显示单个集合。 某些时候,您要绑定的集合包含其他集合。 HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示这样的数据。

 

实例演示

 

在下面的示例中,ListLeagueList 是 League 对象的列表。 每个 League 对象都有一个 Name 和 Division 对象的集合。 每个 Division 都有一个 Name 和 Team 对象的集合,并且每个 Team 对象都有一个 Name。

 

<Window x:Class="SDKSample.Window1"  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  Title="HierarchicalDataTemplate Sample"  xmlns:src="clr-namespace:SDKSample">  <DockPanel>    <DockPanel.Resources>      <src:ListLeagueList x:Key="MyList"/>      <HierarchicalDataTemplate DataType    = "{x:Type src:League}"                                ItemsSource = "{Binding Path=Divisions}">        <TextBlock Text="{Binding Path=Name}"/>      </HierarchicalDataTemplate>      <HierarchicalDataTemplate DataType    = "{x:Type src:Division}"                                ItemsSource = "{Binding Path=Teams}">        <TextBlock Text="{Binding Path=Name}"/>      </HierarchicalDataTemplate>      <DataTemplate DataType="{x:Type src:Team}">        <TextBlock Text="{Binding Path=Name}"/>      </DataTemplate>    </DockPanel.Resources>    <Menu Name="menu1" DockPanel.Dock="Top" Margin="10,10,10,10">        <MenuItem Header="My Soccer Leagues"                  ItemsSource="{Binding Source={StaticResource MyList}}" />    </Menu>    <TreeView>      <TreeViewItem ItemsSource="{Binding Source={StaticResource MyList}}" Header="My Soccer Leagues" />    </TreeView>  </DockPanel></Window>

该示例演示:通过使用 HierarchicalDataTemplate,您可以轻松地显示包含其他列表的列表数据。效果如图示:

 

HierarchicalDataTemplate 示例屏幕快照

 

参考

[WPF系列]-TreeView的常用事项

[WPF系列]-数据邦定之DataTemplate 对分层数据的支持