ПРИМЕЧАНИЕ Я задал соответствующий вопрос: Как объединить DataTrigger и EventTrigger?
У меня есть список, содержащий несколько элементов. Класс item реализует 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
в связанном элементе данных.
Можно ли это сделать без введения концепции выбора в мою модель представления?
Для кого-то, кто задается вопросом, почему я не отключу недоступные элементы, поймите, что это требование приложения, которое могут быть выбраны недоступными параметрами. На самом деле есть несколько списков, а выбор в одном влияет на то, что доступно в других. Я не могу отключить элементы, так как пользователь не сможет изменить свое мнение или изучить различные комбинации, если элементы были отключены на основе более ранних выборов.