2011-04-12 3 views
3

Я использую ListBox для отображения списка редактируемых объектов, в шаблоне которых, среди прочего, есть ComboBox.Скрытие выделения в WPF ListBox, содержащее его в элементах управления

Я использовал эту технику, чтобы общий скрыть выбор 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--> 

ответ

9

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

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

+1

Вы правы, это работает. Я думал, что это абстрактно. –

3

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

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

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

+0

Я знал, что не очень далеко. Благодаря! :-) –

+2

И если цвета системы меняются во время вашего приложения, и вы хотите, чтобы ваш цвет обновлялся, используйте '{DynamicResource {x: Static SystemColors.HighlightColorKey}}'. –

+0

@Andrei - Хороший вопрос, обновил мой ответ, чтобы включить ваше предложение. – CodeNaked

Смежные вопросы