在 WPF 控件中添加或删除触发器

此页仅适用于 WPF 项目

可以使用 触发器 来开始和停止动画时间线,或者更改对象的属性。有两种触发器:

  • 属性触发器 通过此机制,一个属性(如 IsPressed 属性)的更改会触发另一个属性的即时更改,或通过动画时间线触发渐变更改。可以在控件的样式或模板中设置属性触发器。

    有关在常用控件的简单样式中设置属性触发器的示例,请参阅 WPF 简单样式的样式提示下的主题。

  • 事件触发器    通过此机制,事件(如鼠标 Click 事件)将触发动画时间线。可对美工板上的任何对象、在控件的样式或模板中、在用户控件中或者在文档的根元素中设置事件触发器。

    有关在常用控件的简单样式中设置事件触发器的示例,请参阅WPF 简单样式的样式提示下的主题。

有关详细信息,请参阅使用触发器定义 WPF 控件的行为

Note注意:

触发器将添加到与由其操作的动画时间线相同的范围中。例如,不能在主文档的编辑范围中设置触发器以便在按钮的控件模板中开始动画时间线,即使该按钮包含在主文档中也是如此。但是,可以在控件模板中设置触发器,以便在同一个控件模板中开始动画。对于包含在已添加到文档中的用户控件内的动画而言,这同样适用。

添加属性触发器

  1. 在“对象和时间线”面板中,选择要修改其样式或模板的控件。

  2. 在“对象”菜单上,执行下列操作之一:

    • 若要编辑控件的样式,请指向“编辑样式”,然后单击“编辑副本”。

    • 若要编辑控件的模板,请指向“编辑模板”,然后单击“编辑副本”。

    此时,将显示“创建样式”对话框。

    有关样式和模板的信息以及二者的对比表,请参阅选择和使用交互控件中的“样式和模板”一节。

  3. 单击“确定”退出对话框,然后打开该样式或模板以供编辑。

    Note注意:

    此操作步骤已大为简化,以便专注于设置属性触发器。有关样式和模板之间的差别的详细信息,请参阅选择和使用交互控件中的“样式和模板”一节。有关“创建样式”对话框中的选项的信息,请参阅创建样式创建或修改模板

  4. 在“触发器”面板中,可能已经为类似于 IsEnabled=True 的控件状态设置了一些属性触发器。如果未显示适合所需触发器的状态,请单击“添加属性触发器”Cc295196.9871399d-14aa-4955-9934-04f33700f273(zh-cn,Expression.40).png

    将向列表添加默认的属性触发器 ( MinWidth=0 ),并选定该触发器以供编辑。而且,美工板也会进入该触发器的录制模式。

  5. 单击“激活时机”下的下拉箭头,以修改将激活触发器的属性和值。例如,如果修改的是 CheckBox 控件的模板,则可以选择 target-element.IsChecked=true ,以便在选中复选框时激活触发器。

    现在可以指定在激活触发器时执行的操作。

    Note注意:

    如果希望将属性从 target-element 更改为模板中某个元素的名称,则必须先在“对象和时间线”面板中选择该元素。

  6. 若要使某个属性在激活触发器时发生更改,请在“对象和时间线”面板中选择一个对象,然后在“属性”面板中更改一个属性。这种方法之所以有效,是因为此时处于触发器的录制模式下。

    所做的属性更改将显示在“活动时的属性”下。

  7. 若要在激活触发器时控制动画时间线,请单击“激活时的操作”旁边的“添加新操作”Cc295196.d02551d0-d56a-4ca3-9d5f-58fbc6bda0c3(zh-cn,Expression.40).png

    • 如果没有现有的动画时间线可供选择,则会打开“需要时间线”对话框,询问是否希望创建新时间线。单击“确定”,然后通过设置关键帧并修改对象来创建动画。

    • 如果已有动画时间线可供选择,将显示一个下拉列表,其中包含现有时间线以及一个用于创建新时间线的选项。

    该时间线将显示在“激活时的操作”下,并设置为“Begin”。

  8. 若要退出样式或模板的编辑范围,请单击“返回到范围”Cc295196.55844eb3-ed98-4f20-aa66-a6f5b23eeb2b(zh-cn,Expression.40).png。按 F5 运行应用程序,以便测试新触发器。

添加事件触发器

  1. 在“对象和时间线”面板中,选择要在交互时将激活触发器的对象。例如,如果希望在用户的指针移到文本框上时激活触发器,请选择该文本框。

  2. 在“触发器”面板中,单击“添加事件触发器”Cc295196.671c69bb-32e9-4ef9-9837-29403524abd0(zh-cn,Expression.40).png

    • 将添加默认的触发器 ( When Window.Loaded is raised )。
  3. 单击下拉箭头以修改将激活触发器的事件。例如,如果希望在用户的指针移到文本框上时激活触发器,则将 When Window.Loaded is raised 改为 When textBox.MouseMove is raised

    Note注意:

    如果希望将事件从 Window 更改为模板中某个元素的名称,则必须先在“对象和时间线”面板中选择该元素。

  4. 若要在激活触发器时控制动画时间线,请单击 When checkBox.MouseMove is raised 旁边的“添加新操作”Cc295196.d02551d0-d56a-4ca3-9d5f-58fbc6bda0c3(zh-cn,Expression.40).png

    • 如果没有现有的动画时间线可供选择,则会打开“需要时间线”对话框,询问是否希望创建新时间线。单击“确定”,然后通过设置关键帧并修改对象来创建动画。

    • 如果已有动画时间线可供选择,将显示一个下拉列表,其中包含现有时间线以及一个用于创建新时间线的选项。

    时间线出现在 When checkBox.MouseMove is raised 下,并且设置为 Begin

  5. 按 F5 运行应用程序,以便测试新触发器。

删除触发器

  1. 在“触发器”面板中,选择要删除的触发器。

    Note注意:

    如果要删除的触发器位于样式或控件模板中,请确保处于该样式或模板的编辑模式下。

  2. 单击“删除触发器”Cc295196.d31907a6-867b-4e16-b860-f07c9531fbd7(zh-cn,Expression.40).png

  3. 将从列表中删除该触发器。

Microsoft Corporation 版权所有 ⓒ 2011。保留所有权利。