Триггер WPF для IsSelected в DataTemplate для элементов ListBox с Blend
-
03-07-2019 - |
Вопрос
Я хотел изменить цвет переднего плана, когда выбирал 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, в котором вы можете собрать все стили, предназначенные для дизайнера. Затем вы можете объединить этот словарь ресурсов с основными ресурсами вашего элемента управления или приложения.