Я меняю SystemColors.HighlightBrushKey
и SystemColors.ControlBrushKey
в моем ListView, и он работает хорошо; но это представление списка содержит другие сложные элементы управления в каждом из них ListViewItem (например, другой ListView, DataGrid), и этот новый системный цвет применяется ко всем дочерним элементам управления.Сброс переопределенных SystemColors
<!-- This resource is added to remove the blue highlighting
in the selected ListView item. -->
<SolidColorBrush
x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="Transparent" />
<!-- This resource is added to remove the background highlighting
of the inactive selected ListView item. -->
<SolidColorBrush
x:Key="{x:Static SystemColors.ControlBrushKey}"
Color="Transparent" />
Есть ли способ сбросить этот цвет системы до исходного для элемента управления, который является дочерним элементом этого ListView?
Фактическая проблема, с которой я сталкиваюсь, заключается в том, что эти переопределенные системные цвета применяются к элементам управления дочернего элемента контекста (из списка ListView); Это прекрасно работает как таковое, но при использовании темы Windows Classic ContextMenus использует эти системные цвета и выглядит странно. Поэтому я надеюсь, что если я смогу переустановить SystemColors на оригинальные, ContextMenu будет работать правильно.
Есть ли другой способ решить эту проблему?
Переопределить шаблон ListViewItem вместо переопределения SystemColors. –
Вы хотите отключить эффект MouseOver? –
Спасибо Rohit, да, это возможно, но у меня есть другой элемент управления ListView и DataGrid, который также требует такого поведения; это самый простой способ применить это поведение ко всем и легче всего поддерживать, не делая его более сложным. – akjoshi