嵌套的 HierarchicalDataTemplate - 改进
Nested HierarchicalDataTemplate - improvement
有什么方法可以更清楚地做到这一点(auto-deeply 在 ObservableCollection 中)?如果我有更多 'Childs',它会变得很烦人。
在我的 class 我有 collection:
public ObservableCollection ObservableChildNodes { get; set; }
<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>
是的,只需删除 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>
有什么方法可以更清楚地做到这一点(auto-deeply 在 ObservableCollection 中)?如果我有更多 'Childs',它会变得很烦人。
在我的 class 我有 collection:
public ObservableCollection ObservableChildNodes { get; set; }
<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>
是的,只需删除 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>