Скрытие выделения в ListBox WPF с сохранением его в элементах управления - PullRequest
3 голосов
/ 12 апреля 2011

Я использую 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 ]

10 голосов
/ 12 апреля 2011

Я использовал эту общую технику, чтобы скрыть выбор ListBox, который не используется для всего

Если вы не используете выбор для что-либо , вам следует просто использовать ItemsControl.

3 голосов
/ 12 апреля 2011

Вы можете сделать:

<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}}" />

Чтобы восстановить кисти по умолчанию.

...