Как переопределить SelectedUnfocusedColor для TreeViewItem - PullRequest
1 голос
/ 07 апреля 2019

Я переношу свое приложение 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, который кажется немного излишним, учитывая размер шаблона по умолчанию.

1 Ответ

1 голос
/ 09 апреля 2019

В шаблоне по умолчанию используется SystemColors.InactiveSelectionHighlightBrushKey, поэтому вы должны переопределить эту кисть:

<Style TargetType="TreeViewItem">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
    </Style.Resources>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...