如何为TreeViewItem覆盖SelectedUnfocusedColor

时间:2019-04-07 06:15:44

标签: c# wpf xaml .net-core

我正在将WPF应用程序从.NET Framework迁移到.NET Core 3.0。

以前,我曾使用以下“ hack”方法为TreeViewItem覆盖选定的未聚焦背景颜色:

<TreeView.ItemContainerStyle>
    <Style TargetType="TreeViewItem">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
        </Style.Resources>
    </Style>
</TreeView.ItemContainerStyle>

但是它在.NET Core 3.0中不起作用:未聚焦的选定项目仍然具有浅灰色背景。

MSDN中的默认模板为此颜色使用{StaticResource SelectedUnfocusedColor},因此我尝试通过将所需的<Color>放在TreeView的“资源”部分中来覆盖它-没有帮助。

我还尝试过在Style.Triggers中为TreeViewItem样式创建一个<Trigger>,当IsSelected为True时将背景色设置为{x:Static SystemColors.HighlightColor},但也无济于事。

我没有主意,Google并没有提供太多帮助(我没有尝试过的唯一其他主意是完全重新设计TreeViewItem,考虑到默认模板的大小,这似乎有些过头了。

1 个答案:

答案 0 :(得分:1)

默认模板使用SystemColors.InactiveSelectionHighlightBrushKey,因此您应“覆盖”此笔刷:

<Style TargetType="TreeViewItem">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
    </Style.Resources>
</Style>