我不明白为什么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>
但只有第二个似乎有效。如果我们必须使用Style?
,为什么Grid元素有Triggers标记?由于
答案 0 :(得分:3)
对你的问题的简短回答是因为这是WPF团队的设计方式。
FrameworkElement.Triggers
只能包含 EventTriggers
,尽管属性是TriggerBase的集合。它也在MSDN page明确说明:
请注意,仅在元素上建立的触发器集合 支持EventTrigger,而不是属性触发器(Trigger)。如果您需要 属性触发器,您必须将它们放在样式或模板中 然后直接将该样式或模板分配给元素 通过Style属性,或间接通过隐式样式 参考