在分层的TreeView中更改高亮颜色

4

我有一个带有分层数据模板的TreeView。

<HierarchicalDataTemplate x:Key="treeViewItemTemplate" ItemsSource="{Binding GetChildren}">
    <DockPanel Margin="0,8,8,0">
        <Image Source="{Binding GetImage}" Width="16" Height="16" />
        <local:MonitorTriStateCheckBox Margin="4,0,0,0" IsChecked="{Binding IsChecked}" Click="CheckBox_Clicked" Tag="{Binding UniqueKey}" Style="{DynamicResource CheckBox}"></local:MonitorTriStateCheckBox>
        <TextBlock Margin="4,0,0,0" Text="{Binding Name}" Style="{DynamicResource TextBlock}">
        </TextBlock>
    </DockPanel>
    <HierarchicalDataTemplate.Triggers>
        <Trigger Property="TreeViewItem.IsSelected" Value="True">
            <Setter Property="TreeViewItem.Background" Value="Orange" />
        </Trigger>
    </HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>

从代码中可以看到,我设置了TreeViewItem的is selected触发器,但是这没有任何效果。我也尝试过以下方法:

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
        <Setter Property="Visibility" Value="{Binding IsVisible, Mode=TwoWay}" />
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Orange" />
            </Trigger>
        </Style.Triggers>
    </Style>
</TreeView.ItemContainerStyle>

但是这也没有任何效果。

有人想知道怎么改变TreeViewItem的高亮颜色吗?


3
请查看我在这里的答案:https://dev59.com/M0bRa4cB1Zd3GeqPwxKy......您可以用相同的方式覆盖TreeView的高亮颜色。 - Matt Hamilton
1个回答

10

试试这个...

<TreeView.Resources>                                                
    <SolidColorBrush Color="Green" x:Key="{x:Static SystemColors.HighlightBrushKey}"/>
</TreeView.Resources>

颜色只能是系统预定义的颜色,因此您不能使用透明度(例如#02FF0000)。+1 - Tri Q Tran
谢谢,你真是个天才,我试了一个多小时其他方法都不行。 - cool mr croc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接