为了根据条件改变ListBoxItem前景,我可以通过DataTemplate.Triggers来实现:
<ListBox.ItemTemplate>
<DataTemplate>
...
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Name}" Value="Item1">
<Setter Property="ListBoxItem.Foreground" Value="Blue" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>或者,我可以在Style.Triggers中执行以下操作:
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Name}" Value="Item1">
<Setter Property="Background" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>问题:
我想知道这两种方法有什么不同?
有没有什么场景是我应该优先使用的呢?
每一个最好的用途是什么?
如果我同时应用它们,那么哪个触发器会先发生?
发布于 2013-02-23 00:28:03
在您的示例中,样式触发器将应用于所有列表框项目,而数据模板触发器将应用于使用数据模板的列表框项目。
WPF的好处是有多种方法可以实现单个目标。对于你有的大多数问题,你将不得不玩弄触发器来获得答案。
一般而言,样式触发器用于更改样式,并且“通常”不会与数据交互(然而,我在stackoverflow中看到过代码,它是双向使用的)。如果我是你,因为你正在修改背景--我会使用带键的样式。
https://stackoverflow.com/questions/15028500
复制相似问题