Я переношу свое приложение WPF с .NET Framework на .NET Core 3.0.
Ранее я использовал следующий «хак», чтобы переопределить выбранный несфокусированный цвет фона для 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 — это не помогло.
Я также пытался создать <Trigger> в Style.Triggers для стиля TreeViewItem, установив цвет фона на {x:Static SystemColors.HighlightColor}, когда IsSelected имеет значение True, но это тоже не помогло.
У меня нет идей, и Google не предлагает особой помощи (единственная другая идея, которую я не пробовал, заключалась в том, чтобы полностью изменить шаблон TreeViewItem, что кажется излишним, учитывая размер шаблона по умолчанию.
Последний, превью3.
@mephisto123: Вы пытались определить ресурс SolidColorBrush с помощью x:Key из SystemColors.InactiveSelectionHighlightBrushKey?
Оно работает! Благодаря тонну! Пожалуйста, опубликуйте это как ответ, чтобы я мог отметить его как правильный :)





Шаблон по умолчанию использует SystemColors.InactiveSelectionHighlightBrushKey, поэтому вы должны «переопределить» эту кисть:
<Style TargetType = "TreeViewItem">
<Style.Resources>
<SolidColorBrush x:Key = "{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color = "{x:Static SystemColors.HighlightColor}"/>
</Style.Resources>
</Style>
Какую версию .NET Core 3.0 вы используете?