1
我有一个ViewModel,提供项目的集合。还有一个ActiveItem propery。 Items集合可能包含或不包含ActiveItem。WPF突出显示项目
我想要做的(在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中的绑定有关 - 我还没有看到任何其他示例。
任何想法,我可能会使这项工作?
感谢,
丹尼尔
因此,而不是直接暴露项目(模型对象),我应该创建一个ItemViewModel并暴露?我会不情愿直接添加一个IsActive属性到我的Item模型对象。 – djskinner 2010-01-26 15:18:13