Style.Triggers与ControlTemplate.Triggers
我应该何时选择Style.Triggers
,何时应该选择ControlTemplate.Triggers
? 使用一个在另一个上有什么好处吗?
假设我有这些样式可以达到相同的效果:
... ... ...
从Background 更新 不会更改按钮C#WPF Windows 8中的Button确实对IsMouseOver使用ControlTemplate.Trigger,因此在某些情况下可能需要完全覆盖ControlTemplate
才能获得所需的function。 因此,您需要在Style触发器上使用ControlTemplate触发器。
您可能并不总是需要覆盖默认的ControlTemplate
。 假设您有一个控件,并且您希望所有MyTextControl在IsMouseOver
为true时具有蓝色Foreground
, IsMouseOver
其他所有内容保留为默认值。 你可以使用这样的东西:
如果你想使用ControlTemplate.Triggers
你需要复制默认的MyTextControl
Template
,否则你最终会没有视觉效果。
除此之外,我认为唯一的区别是Style.Triggers
的优先级低于ControlTemplate.Triggers
( Precedence documentation )。 但是,只有使用两种触发类型才有意义。