嵌套的HierarchicalDataTemplate - 改进

时间:2016-07-08 14:49:53

标签: wpf xaml binding hierarchicaldatatemplate

有没有办法更清楚地做到这一点(在ObservableCollection中自动深入)?如果我有更多的孩子,那就太烦人了。

在我班上我有收藏:

  

public ObservableCollection ObservableChildNodes {get;组; }

<HierarchicalDataTemplate x:Key="ChildChildChildChildNodeTemplate">
         <TextBlock Text="{Binding DisplayName}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="ChildChildChildNodeTemplate" ItemsSource="{Binding Path=ObservableChildNodes}" ItemTemplate="{StaticResource ChildChildChildChildNodeTemplate}">
         <TextBlock Text="{Binding DisplayName}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="ChildChildNodeTemplate" ItemsSource="{Binding Path=ObservableChildNodes}" ItemTemplate="{StaticResource ChildChildChildNodeTemplate}">
         <TextBlock Text="{Binding DisplayName}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="ChildNodeTemplate" ItemsSource="{Binding Path=ObservableChildNodes}" ItemTemplate="{StaticResource ChildChildNodeTemplate}">
         <TextBlock Text="{Binding DisplayName}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="RootNodeTemplate" ItemsSource="{Binding Path=ObservableChildNodes}" ItemTemplate="{StaticResource ChildNodeTemplate}">
         <TextBlock Text="{Binding DisplayName}" FontWeight="Bold" />
</HierarchicalDataTemplate>

1 个答案:

答案 0 :(得分:2)

是的,只需删除ItemTemplate="{StaticResource ChildChildNodeTemplate}"

即可

如果要以不同方式显示第一层,则只需要第一层和第二层。

<HierarchicalDataTemplate x:Key="ChildNodeTemplate" ItemsSource="{Binding Path=ObservableChildNodes}">
         <TextBlock Text="{Binding DisplayName}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="RootNodeTemplate" ItemsSource="{Binding Path=ObservableChildNodes}" ItemTemplate="{StaticResource ChildNodeTemplate}">
         <TextBlock Text="{Binding DisplayName}" FontWeight="Bold" />
</HierarchicalDataTemplate>