首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTemplate.Triggers vs Style.Triggers

DataTemplate.Triggers vs Style.Triggers
EN

Stack Overflow用户
提问于 2013-02-23 00:14:21
回答 1查看 2.6K关注 0票数 2

为了根据条件改变ListBoxItem前景,我可以通过DataTemplate.Triggers来实现:

代码语言:javascript
复制
<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中执行以下操作:

代码语言:javascript
复制
<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>

问题:

我想知道这两种方法有什么不同?

有没有什么场景是我应该优先使用的呢?

每一个最好的用途是什么?

如果我同时应用它们,那么哪个触发器会先发生?

EN

回答 1

Stack Overflow用户

发布于 2013-02-23 00:28:03

在您的示例中,样式触发器将应用于所有列表框项目,而数据模板触发器将应用于使用数据模板的列表框项目。

WPF的好处是有多种方法可以实现单个目标。对于你有的大多数问题,你将不得不玩弄触发器来获得答案。

一般而言,样式触发器用于更改样式,并且“通常”不会与数据交互(然而,我在stackoverflow中看到过代码,它是双向使用的)。如果我是你,因为你正在修改背景--我会使用带键的样式。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15028500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档