[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的常用事项

你可能感兴趣的:(template)