TreeViewを使用して階層データを表示しようとしていますが、Childrenタイプごとに異なるDataTemplatesを設定したいと思います。
しかし、問題は、私のスタイルが適用されないということです。
多分それは非常に単純な間違いですが、私は本当にそれを見つけられません。
<TreeView ItemsSource="{Binding List}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Main}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Property1}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Type2}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="True"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<TextBlock Text="{Binding Property2}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Type3}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="False"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
わかりました、私は何が悪いのか知っています。HierarchicalDataTemplate.ItemContainerStyleはItemsContainerに適用されるスタイルが含ま子ども現在のノードのが格納されているが。これを実験として試して、スタイルを次のように変更してください。
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="True" />
<Setter Property="Foreground" Value="Navy" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
このスタイルを配置したノードには引き続き黒い前景がありますが、すべての子は海軍の前景になります。
少し直感に反しますが、考えてみると理にかなっていると思います。したがって、これを念頭に置いて、最善の解決策は、すべてのTreeViewItemのIsExpandedをVM内の変数にバインドし、そこでのタイプに基づいて異なる値を選択することだと思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加