У меня есть ViewModel, которая предоставляет коллекцию предметов. Существует также свойство ActiveItem. Коллекция Items может содержать или не содержать ActiveItem.
То, что я хочу сделать (в XAML), это отобразить элементы в виде списка и выделить любые элементы, равные активному элементу.
Я пробовал следующее безуспешно:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border x:Name="outerBorder" Background="Green">
<TextBlock Text="{Binding ItemId}" />
</Border>
<DataTemplate.Triggers>
<DataTrigger
Binding="{Binding
Path=DataContext.Item.ItemId,
RelativeSource={RelativeSource TemplatedParent},
Mode=Default}"
Value="{Binding
Path=DataContext.ActiveItem.ItemId,
RelativeSource={RelativeSource AncestorType=Window},
Mode=Default}"
>
<Setter TargetName="outerBorder"
Property="Background" Value="Orange" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Как вы можете видеть, я пытался использовать DataTrigger для сопоставления текущего элемента с ActiveItem, но он не работает. Я думаю, что это как-то связано с моей попыткой использовать Binding в DataTrigger.Value, чего я не видел в других примерах.
Любые идеи, как я мог бы сделать эту работу?
Спасибо
Daniel