目的の動作を得るには、新しいデフォルト スタイルとテンプレートを提供する必要がありますTreeViewItem
。このテンプレート内で、 のすべての子の背景に影響を与えることなく、強調表示された項目の背景の色を変更できますTreeViewItem
。
テンプレートを含むスタイルの例は、MSDN: TreeViewItem ControlTemplate Exampleにあります。
最初のステップ: スタイルをアプリケーションに取り込む
でスタイルとテンプレートを使用できるようにする必要がありますTreeView
。したがって、Web サイトから XAML をコピーし、次のリソース セクションに貼り付けますTreeView
。
<TreeView x:Name="tvFilters" ...>
<TreeView.Resources>
<!-- paste copied styles here -->
</TreeView.Resources>
</TreeView>
注:提供された例の下部にあるSolidColorBrush
名前もコピーしてください。GlyphBrush
そうしないと、コードが機能しません。
2 番目のステップ: ニーズに合わせてコードを変更する
コードを希望どおりに機能させるには、いくつかの変更を加える必要があります。
x:Key="{x:Type TreeViewItem}"
次の行から削除します
<Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}">
ように見えるように
<Style TargetType="{x:Type TreeViewItem}">
これにより、スタイルがすべてのアイテムに適用されますTreeView
TreeViewItem
検索<Trigger Property="IsSelected" Value="true">
と置換のスタイルで
<Setter TargetName="Bd"
Property="Background"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
と
<Setter TargetName="Bd"
Property="Background"
Value="Transparent" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
注:両方の値 (Foreground
とBackground
) が置き換えられています!
TreeViewItem
検索のスタイルで<MultiTrigger>
は、 a<Condition Property="IsSelected" Value="true"/>
と replaceがあります
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
と
<Setter TargetName="Bd" Property="Background" Value="Transparent"/>
結果
変更を行う前は、次のTreeView
ようになります。
変更を行った後、 の青色の強調表示はTreeView
消えますが、 ではまだ使用できますComboBox
。