我有一个带有已定义ItemTemplate的ItemsControl。 ItemTemplate包含一个图像。 Image有一个样式触发器来设置图像。
如果项目是列表中的最后一个,我可以用什么装订来触发要显示的不同图像?
答案 0 :(得分:3)
虽然最简单的方法仍然可能是在VM /集合级别添加一个指标字段并在Trigger
中引用该属性,但也有一些替代方案。
其中一个可能是使用AlternationCount
的{{1}}。这种方法将确保在对源集合进行更改时(如添加/删除/排序和排序时)保留最后一项的特殊样式。
ItemsControl
集合中ItemsControl
(AlternationCount="{Binding Items.Count}"
是绑定的集合)Items
中检测最后一项的触发器,它有点复杂。XAML:
ItemTemplate
和使用的转换器:
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="(ItemsControl.AlternationIndex)"
RelativeSource="{RelativeSource FindAncestor,
AncestorType=ContentPresenter}" />
<Binding Path="ItemsSource.Count"
RelativeSource="{RelativeSource FindAncestor,
AncestorType=ItemsControl}" />
</MultiBinding>
</DataTrigger.Binding>
<!-- Change the following setter to what you need for new image -->
<Setter Property="Foreground"
Value="Tomato" />
</DataTrigger>