我有一个提供项目集合的 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 匹配,但它不起作用。我认为这与我尝试在 DataTrigger.Value 中使用绑定有关——我还没有看到任何其他示例。
有什么想法可以让我完成这项工作吗?
谢谢,
丹尼尔