我正在将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,考虑到默认模板的大小,这似乎有些过头了。>
答案 0 :(得分:1)
默认模板使用SystemColors.InactiveSelectionHighlightBrushKey
,因此您应“覆盖”此笔刷:
<Style TargetType="TreeViewItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
</Style.Resources>
</Style>