2012-04-13 2 views
2

Я пытаюсь создать ListBox, где выделенные элементы выглядят одинаково независимо от того, имеет ли объект ListBox фокус или нет.Настройка неактивного выделения Цвет WPF ListBox для активного цвета подсветки

По существу, я хочу, чтобы свойство цвета SystemColors.ControlBrushKey было таким же, как цвет SystemColors.HighlightBrushKey.

Я думал, что я мог бы использовать следующее:

<ListBox> 
    <ListBox.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
         Color="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
    </ListBox.Resources> 
</ListBox> 

Но это на самом деле выдает следующее сообщение об ошибке:

System.Windows.Markup.XamlParseException: Установить свойство «System.Windows.Media.SolidColorBrush. Цвет "сделал исключение. ---> System.ArgumentException: «# FF3399FF» недействительное значение для свойства «Цвет»

Если я установил Color="#FF3399FF", он отлично работает.

Что я делаю неправильно?

+3

Я думаю, что вы пытаетесь установить 'свойство Color' к' Brush', не «Цвет». –

+0

Да, я тоже так думал, но теперь вы подтвердили мое подозрение, я только заметил, что использовал HighlightBrushKey вместо HighlightColorKey * facepalm * Я отправлю полный рабочий пример. Благодаря! –

ответ

5

Кредит Николай W указал мне в правильном направлении - вот полный код для ListBox:

<ListBox Width="200" Height="200"> 
    <ListBox.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
         Color="{DynamicResource {x:Static SystemColors.HighlightColorKey}}" /> 
    </ListBox.Resources> 
    <ListBox.ItemContainerStyle> 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="Selector.IsSelected" Value="True"> 
        <Setter Property="TextElement.Foreground" Value="White"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBoxItem IsSelected="True">Item A</ListBoxItem> 
    <ListBoxItem>Item B</ListBoxItem> 
    <ListBoxItem>Item C</ListBoxItem> 
</ListBox>