3

次のように強調表示が無効になっている TreeView があります。

<TreeView Name="tvFilters" Margin="0,10,0,10" Background="White" BorderBrush="White">
            <TreeView.Resources>
                <!-- Disables the blue highlighting when a TreeViewItem is clicked -->
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}">
                    Transparent
                </SolidColorBrush> 
            </TreeView.Resources>
 </TreeView>

編集:これは私の TreeView の一部です - TreeViewItem をクリックした後に発生した灰色の領域に注意してください:

ここに画像の説明を入力

ここに別のものがあります:

ここに画像の説明を入力

4

1 に答える 1

4

目的の動作を得るには、新しいデフォルト スタイルとテンプレートを提供する必要があります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 番目のステップ: ニーズに合わせてコードを変更する

コードを希望どおりに機能させるには、いくつかの変更を加える必要があります。

  1. x:Key="{x:Type TreeViewItem}"次の行から削除します

    <Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}">
    

    ように見えるように

    <Style TargetType="{x:Type TreeViewItem}">
    

    これにより、スタイルがすべてのアイテムに適用されますTreeView

  2. 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}}"/>
    

    注:両方の値 (ForegroundBackground) が置き換えられています!

  3. 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

ここに画像の説明を入力

于 2012-12-06T09:48:41.337 に答える