回复 3楼q406157290的帖子
在2楼贴出的链接里:http://msdn.microsoft.com/zh-cn/ ... aldatatemplate.aspx
有XAML代码演示这个结构,你可以再看看。
- <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>
复制代码
我把代码贴出来了。
其中TreeviewItem的ItemSource绑定了一个List,名字叫MyList。这个MyList的结构在<DockPanel.Resource>里。
- <HierarchicalDataTemplate DataType = "{x:Type src:League}"
- ItemsSource = "{Binding Path=Divisions}">
- <TextBlock Text="{Binding Path=Name}"/>
- </HierarchicalDataTemplate>
复制代码
定义根节点(Legues),以及它所有的子节点(Division)。
- <HierarchicalDataTemplate DataType = "{x:Type src:Division}"
- ItemsSource = "{Binding Path=Teams}">
- <TextBlock Text="{Binding Path=Name}"/>
- </HierarchicalDataTemplate>
复制代码
定义Division节点以及它的子节点。
树形结构就是这样嵌套实现的。 |