Скрытие выделения в ListBox WPF с сохранением его в элементах управления
Я использую ListBox для отображения списка редактируемых объектов, шаблон которых, среди прочего, содержит ComboBox.
Я использовал эту общую технику, чтобы скрыть выбор ListBox, который ни для чего не используется:
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Style.Resources>
<Brush x:Key="{x:Static SystemColors.HighlightBrushKey}">Transparent</Brush>
<Brush x:Key="{x:Static SystemColors.ControlBrushKey}">Transparent</Brush>
Проблема в том, что это портит выпадающий список ComboBox.
Я хотел бы переопределить эти ресурсы снова в моем шаблоне, указав исходные значения (SystemColors.HighlightBrush
и т. д.) вместо их жесткого кодирования. Как я могу это сделать?
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type SearchService:Criterion}">
<DataTemplate.Resources>
<!--I know how to specify a hardcoded brush here,
but not how to reference one from SystemColors-->
2 ответа
Решение
Я использовал эту общую технику, чтобы скрыть выбор ListBox, который не используется ни для чего
Если вы не используете выбор для чего-либо, вы должны просто использовать ItemsControl
вместо.
Вы могли бы сделать:
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="{x:Static SystemColors.HighlightColor}" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
Color="{x:Static SystemColors.ControlColor}" />
или же
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="{DynamicResource {x:Static SystemColors.HighlightColorKey}}" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
Color="{DynamicResource {x:Static SystemColors.ControlColorKey}}" />
Чтобы восстановить кисти по умолчанию.