gpt4 book ai didi

wpf - 为什么 WPF 触发器必须声明为一种样式(甚至内联)?

转载 作者:行者123 更新时间:2023-12-01 02:16:16 25 4
gpt4 key购买 nike

我不明白为什么 WPF 允许我同时写

<Grid>
<Grid.Triggers>
<DataTrigger Binding="{Binding HasNeverBeenSeen}" Value="true">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Grid.Triggers>
</Grid>


<Grid>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<DataTrigger Binding="{Binding HasNeverBeenSeen}" Value="true">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>

但只有第二个似乎有效。如果我们必须使用样式,为什么 Grid 元素有一个 Triggers 标签?

谢谢

最佳答案

对您问题的简短回答是因为 WPF 团队就是这样设计的。

FrameworkElement.Triggers 只能有 EventTriggers 虽然属性是 TriggerBase 的集合。 MSDN page上也有明确说明:

Note that the collection of triggers established on an element only supports EventTrigger, not property triggers (Trigger). If you require property triggers, you must place these within a style or template and then assign that style or template to the element either directly through the Style property, or indirectly through an implicit style reference.

关于wpf - 为什么 WPF 触发器必须声明为一种样式(甚至内联)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com