由于触发而恢复以前的值

时间:2013-06-30 11:02:20

标签: c# wpf templates triggers styles

如果我正在使用<Trigger Property="IsMouseOver" Value="True">使用的ControlTemplate.Triggers 如果IsMouseOver为false,我该如何恢复以前的值?

(例如,在IsMouseOver=true上将背景更改为绿色并在更改前恢复为之前的颜色。之前的颜色可以在控件上设置,而不一定在样式内部。)

方面:

  1. 我在触发器中使用stoaryboard
  2. 在控件样式中,我将背景设置为蓝色
  3. 在带控件的窗口的实现中,我将控件设置为样式,但将控件的背景设置为红色。
  4. 我想设置动画,将其从红色变为绿色,当IsMouseOver = false时,再次将其恢复为红色。
  5. 请帮助我!

1 个答案:

答案 0 :(得分:1)

触发器不会永久更改值,它们可以是活动的和非活动的,如果它们处于非活动状态,您将自动获得之前的值(根据rules of precedence)。

模板触发器不会覆盖本地值,因此您必须使用setter作为默认值。

当您使用将覆盖所有其他内容的动画时,您可以通过Trigger.ExitActions为其设置动画,但您需要知道原始值。