运行情节提要时进行控制
在 Microsoft Expression Blend 应用程序中运行情节提要时,可以通过以下方法进行控制:
将行为拖到希望用于控制情节提要的对象上。您可以使用“ControlStoryboardAction”行为,或者,如果使用状态来创建动画,则可以使用“GoToStateAction”行为。有关详细信息,请参阅向对象添加行为。
创建一个触发器,使之在发生某个事件(如按钮单击)时或在某个属性发生更改时(如果情节提要位于控件模板中)运行情节提要。
说明: Microsoft Silverlight 项目中不提供触发器。
在代码隐藏文件中创建一个事件处理程序方法,使之调用情节提要的 Begin 方法。
还可以使用这些方法来控制情节提要的停止、暂停、继续和删除或跳到结尾。
这些方法根据用户的工作范围会略有不同。
说明: |
---|
以下过程介绍的是包含可视动画的情节提要。但是,这些过程也可以应用于音频或视频情节提要。有关详细信息,请参阅在活动文档中插入音频或视频文件。 |
主文档范围内的情节提要
如果情节提要将会是文档的主要功能,并且在用户与同样位于主文档范围内的控件交互时会将其触发,则请在主文档范围内创建情节提要。
使用事件处理程序方法控制主文档范围内的情节提要
关闭所有打开的情节提要。有关详细信息,请参阅打开或关闭情节提要。
如果在 WPF 项目中工作,请删除在创建情节提要时为 Window.Loaded 事件创建的默认触发器。有关详细信息,请参阅添加或删除触发器。
在“对象和时间线”面板中,选择要在交互时运行情节提要的对象。例如,如果希望在用户的指针移到文本块上时运行情节提要,请选择该文本块。
在“属性”面板中,单击“事件”。此时,将显示选定元素的所有可用事件的列表(按字母顺序排列)。
提示: 若要查看事件的简短说明,请将指针移到该事件的名称上。工具提示中将显示该事件的说明。
找到要添加编程逻辑的事件(例如,“MouseEnter”事件)。
有两种方法可以生成空的事件处理程序方法:
在事件名称旁边的文本块内双击。Expression Blend 将为事件处理程序方法生成默认名称,并将其输入到文本块中,然后为空方法生成代码。
在事件名称旁边的文本块内键入一个名称,然后按 Enter 或单击其他位置,将焦点移出文本块。事件方法名必须以字母开头。如果代码隐藏文件中还不存在该方法名,Expression Blend 将为空方法生成代码,并使用您键入的名称。
Expression Blend 将打开代码隐藏文件,然后将空的事件处理程序方法粘贴到其中。
private void TextBlock_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { }
打开代码隐藏文件并粘贴事件处理程序方法之后,请在事件处理程序方法中添加以下加粗的代码行:
private void TextBlock_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { Storyboard myStoryboard; myStoryboard = (Storyboard)this.Resources["Storyboard1"]; myStoryboard.Begin(this); }
Private Sub textBlock_MouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) Dim myStoryboard As New Storyboard myStoryboard = CType(Me.Resources("Storyboard1"), Storyboard) myStoryboard.Begin(Me) End Sub
保存所有文件,然后按 F5 以生成并测试应用程序。例如,在运行应用程序时,将鼠标移到文本块上,以查看动画是否开始运行。
说明: 如果再次将鼠标移到文本块上时动画并没有返回到起始点,这可能是因为之前在 0 秒标记处没有设置关键帧。
使用事件触发器控制主文档范围内的情节提要(仅限 WPF)
在 Expression Blend 中,当您在 Windows Presentation Foundation (WPF) 项目中的主文档范围内创建情节提要时,会自动新建一个触发器,该触发器将在加载应用程序窗口时运行情节提要。可以在“触发器”面板中查看此触发器。
在创建情节提要时 Expression Blend 设置的默认触发器
如果保留此触发器的设置不变,则在启动应用程序之后将立即运行情节提要。或者,可以通过以下过程修改此行为。
关闭所有打开的情节提要。有关详细信息,请参阅打开或关闭情节提要。
如果在创建情节提要时为 Window.Loaded 事件创建了一个默认触发器,并且不希望在启动应用程序之后就运行情节提要,请在“触发器”面板中选择 Window.Loaded。否则,请单击“添加事件触发器”,以创建新的默认事件触发器。
在“对象和时间线”面板中,选择要在交互时运行情节提要的对象。例如,如果希望在用户的指针移到文本块上时运行情节提要,请选择该文本块。
通过使用“触发器”面板中的下拉菜单,更改触发动画 (Window.Loaded) 的事件。例如,将“在引发 Window.Loaded 时”更改为“在引发 textblock.MouseEnter 时”。
定义将在触发事件时发生的操作。如果未列出任何操作,请单击“添加新操作”。确保将该操作设置为情节提要的名称(例如“Storyboard1”),并确保所调用的方法为“Begin”。或者,可以选择任何对于情节提要有效的方法。有关详细信息,请参阅添加或删除触发器。
控件模板和样式中的情节提要
有时,Microsoft Expression Blend 会创建情节提要,例如在向属性触发器或事件触发器(如果修改控件模板)添加操作时。有关如何使用样式和模板的详细信息,请参阅设置支持模板的控件的样式。
说明: |
---|
以下过程适用于 WPF 项目,但您可以使用状态在 Silverlight 项目中控制情节提要。有关详细信息,请参阅更改用户交互的响应状态和添加状态改变后显示的动画。 |
在模板范围内控制情节提要
使用以下方法之一打开样式或模板以供修改:
说明: 若要了解是使用样式还是使用模板,请参阅设置支持模板的控件的样式。
说明: 某些对象不支持模板,如路径对象。“Button”或“RadioButton”等控件支持模板。
若要新建模板,请在美工板上或在“对象和时间线”面板中选择一个对象,然后在“对象”菜单上,单击“编辑模板”,再选择“编辑副本”。此时,将显示“创建样式”对话框。选择要定义资源的位置,然后单击“确定”。有关详细信息,请参阅创建样式。
若要新建样式,请在美工板上或在“对象和时间线”面板中选择一个对象,然后在“对象”菜单上,单击“编辑样式”,再选择“编辑副本”。此时,将显示“创建样式”对话框。选择要定义资源的位置,然后单击“确定”。有关详细信息,请参阅创建样式。
若要打开现有模板,请在“资源”面板中,单击样式旁边的“编辑资源”,然后在“对象和时间线”面板中,右键单击“Style”元素,单击“编辑模板”,再选择“编辑当前模板”。或者,选择已应用自定义样式的控件,然后在“对象”菜单上,单击“编辑模板”,再选择“编辑当前模板”。
若要打开现有样式,请在“资源”面板中,单击样式旁边的“编辑资源”。或者,选择已应用自定义样式的控件,然后在“对象”菜单上,单击“编辑样式”,再选择“编辑当前样式”。
若要修改 Expression Blend 附带的简单样式之一,请在“工具”面板中单击“资产”,依次单击“样式”类别和“简单样式”资源字典,选择一个预先设置样式的控件,在美工板上绘制该控件,以便可以在“资产”面板上使用“SimpleStyles.xaml”资源字典,然后使用上述选项之一打开简单样式或模板。在当前项目中修改“SimpleStyles.xaml”资源字典不会影响其他项目中的“SimpleStyles.xaml”资源字典,除非将当前项目中的“SimpleStyles.xaml”文件复制到其他项目中。
请注意,在样式或模板的编辑范围内,新的 Expression Blend 痕迹导航栏位于美工板的顶部。
选定了模板编辑模式的痕迹导航栏
通过单击痕迹导航栏上的按钮,可以在选定对象的模板编辑模式、样式编辑模式和对象编辑范围之间快速切换。对于应用了自定义样式或模板的任何选定对象,都会显示痕迹导航栏。
在“对象和时间线”面板中,单击“新建”。
此时,将显示“创建情节提要资源”对话框。
输入一个名称,并单击“确定”。“创建情节提要资源”对话框将关闭,并且 Expression Blend 将进入时间线录制模式。
创建一些只影响正在编辑的样式或模板中的对象的动画。
说明: 无法动态显示位于正在修改的模板或样式的外部的对象。但可以动态显示样式或模板中的现有对象。此外,在修改模板时,可以将“模板”节点下的项组合到一个版式面板(如“网格”)中,再向网格中添加更多对象,然后可以动态显示这些对象。
通过执行下列操作之一来触发新的情节提要:
若要将情节提要添加到现有的属性触发器,请在“触发器”面板中选择相应的触发器,然后在“触发器”面板的下半部分中,单击“激活时的操作”或“取消激活时的操作”旁边的“添加新操作”,具体情况取决于您是希望在激活触发器时运行情节提要还是在取消激活时运行情节提要。将自动添加新的情节提要以作为激活触发器时运行的操作。
若要将情节提要添加到新的属性触发器中,请单击“添加属性触发器”,然后在“触发器”面板的下半部分中,将触发器从默认的“target-element.IsCancel = False”更改为所需的属性和值(例如“target-element.IsPressed = True”),再单击“添加新操作”。将自动添加新的情节提要以作为引发事件时运行的操作。
若要将情节提要添加到新的事件触发器中,请单击“添加事件触发器”,然后在“触发器”面板的下半部分中,将触发器从默认的“当引发 target-element.Loaded 时”更改为所需的事件(例如“当引发 target-element.Click 时”),再单击“添加新操作”。将自动添加新的情节提要以作为引发事件时运行的操作。
重要事项: 在对模板进行一般修改之前,始终选择“默认”触发器以关闭触发器录制模式。否则,可能会无意中更改现有的触发器。
警告: 在修改样式和模板时,可能会破坏应用了该样式或模板的系统控件的功能。有关注意事项的列表,请参阅设置支持模板的控件的样式中的“最佳实践”部分。
保存所有文件,然后按 F5 以生成并测试应用程序。
有关修改模板的更具体示例,请参阅动手试验:向按钮添加动画。
用户控件中的情节提要
可以通过在用户控件中放置一个情节提要,将对象以及动态显示这些对象的情节提要封装在一个 XAML 文档和代码隐藏文件中。然后可以在其他文档中多次实例化该用户控件。
控制用户控件中包含的情节提要
通过执行下列操作之一,创建并打开用户控件以供编辑:
在“文件”菜单上,选择“新建项”。在“新建项”对话框中,选择“UserControl”,设置“名称”,然后单击“确定”。
创建动画情节提要并动态显示用户控件中的一些对象。
现在可以使用“主文档范围内的情节提要”下的两个任务之一,通过使用事件触发器或事件处理程序方法来控制动画。
说明: 如果在将一个对象转换为用户控件之前使用“构成 UserControl”命令为该对象创建事件触发器,则必须在用户控件范围内重新创建该事件触发器。这是因为可在用户控件范围内使用的事件与可在主文档范围内使用的事件不同。例如,可以使用一个操作(如“Storyboard1.Begin”)来配置事件(如“当引发 UserControl.MouseDown 时”)。当使用“构成 UserControl”命令时,将在新控件中重构资源和动画,这样就无需重新创建它们。
说明: 如果在将一个对象转换为用户控件之前使用“构成 UserControl”命令为该对象创建事件处理程序方法,则主文档的代码隐藏文件中的事件处理程序方法代码将不会移动到用户控件的代码隐藏文件中。这是因为可能有其他使用相同事件处理程序方法的对象。可以复制事件处理程序方法并将其粘贴到用户控件的代码隐藏文件中。