Триггер WPF для IsSelected в DataTemplate для элементов ListBox с Blend - PullRequest
2 голосов
/ 05 марта 2009

Я хотел изменить цвет переднего плана, когда я выбрал listboxItem, и я сделал это, используя этот бит кода:

<DataTrigger Binding="{Binding  
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
                            <Setter TargetName="descriptionTB" Property="Foreground" Value="#000"/>
</DataTrigger>

Вы можете найти ответ здесь .

Но если я хочу, чтобы дизайнер сделал это в Blend , как бы он сделал это, не углубляясь в xaml?

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 марта 2009

Артур

Конструктор триггеров в Expression Blend позволяет только добавлять и изменять триггеры EventTriggers и Property. Я не нашел способ добавить DataTriggers с Blend. Я также не уверен, как установить привязку RelativeSource с помощью Blend либо. Я всегда передавал код XAML для тестирования и использовал Blend для всего остального.

2 голосов
/ 05 марта 2009

Может быть, я неправильно понимаю вопрос, но вы не можете просто создать ресурс стиля для descriptionTB и позволить дизайнеру иметь дело только с этим определением стиля, а не с привязкой?

<DataTrigger Binding="..">
    <Setter TargetName="descriptionTB" Property="Style" Value="{StaticResource DescriptionTextBoxStyle}" />
</DataTrigger>

В разделе ресурсов вашего элемента управления или окна вы добавляете определение стиля:

<Style TargetType="{x:Type TextBox}" x:Key="DescriptionTextBoxStyle">
    <Setter Property="Foreground" Value="#000" />
</Style>

Если вы хотите дополнительно изолировать конструктор от механики пользовательского интерфейса, вы можете создать словарь ресурсов в отдельном файле xaml, в котором вы можете собрать все стили, предназначенные для конструктора. Затем вы можете объединить этот словарь ресурсов с основными ресурсами вашего элемента управления или приложения.

...