目的の動作を得るには、新しいデフォルト スタイルとテンプレートを提供する必要があります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。
