Триггер WPF для IsSelected в DataTemplate для элементов ListBox с Blend

StackOverflow https://stackoverflow.com/questions/615268

Вопрос

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

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

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

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

Спасибо

Это было полезно?

Решение

Артур,

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

Другие советы

Может быть, я неправильно понимаю вопрос, но вы не можете просто создать ресурс стиля для 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, в котором вы можете собрать все стили, предназначенные для дизайнера. Затем вы можете объединить этот словарь ресурсов с основными ресурсами вашего элемента управления или приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top