ПРИМЕЧАНИЕ Я задал соответствующий вопрос: Как объединить DataTrigger и EventTrigger?
У меня есть список, содержащий несколько предметов. Класс элемента реализует INotifyPropertyChanged
и имеет свойство IsAvailable
. Я использую это свойство для обозначения недоступных опций в списке другим цветом.
Однако, если выбранный элемент недоступен, цвет переднего плана должен быть красным.
<ListBox>
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:InstitutionViewModel}">
<TextBlock Name="Name" Text="{Binding Name}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsAvailable}" Value="False">
<Setter TargetName="Name" Property="Foreground" Value="#888"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.Resources>
</ListBox>
Я использую вышеуказанный триггер данных, чтобы выделить недоступные элементы.
Проблема, с которой я сталкиваюсь, заключается в том, что тот факт, что элемент выбран, не имеет ничего общего с базовыми данными, с которыми связан шаблон. Что мне действительно нужно, так это некоторый мульти-триггер, который поддерживает как Trigger
для свойства зависимости (ListBoxItem.IsSelected
), так и DataTrigger
для связанного элемента данных.
Можно ли это сделать, не вводя концепцию выбора в мою модель представления?
Любой, кто интересуется, почему я не отключаю недоступные элементы, должен понимать, что это требование приложения - выбор недоступных параметров. На самом деле есть несколько списков, и выбор в одном влияет на то, что доступно в других. Я не могу отключить элементы, так как пользователь не сможет изменить свое мнение или исследовать различные комбинации, если элементы были отключены на основе предыдущих выборов.