事件处理概述

此页适用于 WPF 和 Silverlight 2

Microsoft Expression Blend 可用于开发各种基于 Windows 的应用程序以及可与用户输入交互的用户界面 (UI)。例如,如果您希望应用程序启动一条动画时间线,以便在用户移动鼠标时移动一个球,则可以使用 Expression Blend 中的一些功能来配置这种关系。也可以配置应用程序,对应用程序本身状态的改变做出响应。

Cc294567.alert_note(zh-cn,Expression.10).gif说明:

有关 Microsoft Silverlight 1.0 事件处理的信息,请参阅 Silverlight 1.0 概述在 Silverlight 应用程序中创建控制 Storyboard 的按钮。另请参阅 Silverlight 脚本编写和鼠标事件(此链接可能指向英文页面)。

在 Expression Blend 应用程序中创建交互式内容

可以在 Expression Blend 中使用两种方法之一,以使您的应用程序响应用户输入和应用程序更改:

  • 触发器   在“交互”面板中的“触发器”下配置触发器。无需了解如何编程或编写 XAML 代码即可配置触发器。

    在用户与应用程序中的对象进行交互或者在这些对象的状态发生更改时,可以使用触发器来开始、停止、暂停、继续播放或删除动画时间线,或者跳到动画时间线的末尾。也可以对状态改变设置触发器,以更改属性值(如背景颜色)。无需使用代码来配置触发器,而是可以在 Expression Blend 中的“设计”视图中完成所有任务。有关详细信息,请参阅本用户指南中的触发器概述动画概述

    Cc294567.alert_note(zh-cn,Expression.10).gif说明:

    Silverlight 2 项目中不支持触发器。

  • 事件处理程序   在“事件”面板中设置事件处理程序。(在“属性”面板中,单击“事件”Cc294567.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(zh-cn,Expression.10).png 按钮。)

    使用事件处理程序运行的过程,不仅仅可以设置属性或控制动画时间线。例如,还可以添加其他编程逻辑:设置另一个对象的属性、加载或创建新文档、使用数学计算来动态显示对象,等等。事件处理程序方法在文档的代码隐藏文件中定义,并且可以用 C# 或 Visual Basic .NET 语言编写。例如,如果文档名为“Window1.xaml”,则事件处理程序包含在 Window1.xaml.cs 或 Window1.xaml.vb 文件中,具体取决于所使用的编程语言。

有关可使用触发器或事件处理程序方法挂钩到的事件的列表,请参阅本用户指南中的 WPF 事件快速参考

Cc294567.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-cn,Expression.10).gif返回页首

挂钩到事件处理程序方法

Expression Blend 通过为空方法生成代码,可帮助您编写事件处理程序方法。如果安装了 Microsoft Visual Studio 2008 Standard Edition 或更新的版本,Expression Blend 将在 Visual Studio 2008 中打开项目,并打开代码隐藏文件,然后贴入空的事件处理程序方法。如果您没有安装 Visual Studio 2008 Standard Edition 或更新的版本,则 Expression Blend 将空的事件处理程序方法复制到剪贴板中,以便您可以手动打开代码隐藏文件并贴入该方法。有关详细信息,请参阅本用户指南中的创建新的事件处理程序方法

Expression Blend 在设计时考虑了团队开发。通常,软件团队由处理 UI 的设计人员和处理在 UI 背后运行的代码的编程人员组成。您可能会从开发人员那里收到更改过的代码隐藏文件,开发人员在其中添加了各种可从 UI 挂钩到的事件处理程序方法。您可以在 Expression Blend 中完成此操作。有关详细信息,请参阅挂钩到现有的事件处理程序方法

Cc294567.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-cn,Expression.10).gif返回页首

编程问题

在编写事件处理程序时,拥有基于 Windows 的应用程序的编程经验非常有用。这归功于 Windows Presentation Foundation (WPF) 线程模型和 UI 呈现的计时方式。例如,如果创建一个事件处理程序方法使之先更新“Label”中显示的文本,再执行其他一些计算,然后在事件处理程序方法完成之前再次更新同一“Label”中的文本,则您将只会看到最后一次更新。这是因为 UI 呈现发生在事件处理程序方法的结尾。由于所有处理都是在同一线程上完成的,因此应用程序不能在对用于更新 UI 的方法的执行过程中超时。有关如何编写具有多个 UI 更新和计算的 WPF 应用程序的信息,请参阅 MSDN 的 WPF 部分中的线程模型主题(此链接可能指向英文页面)。

Cc294567.7e183f1f-37d8-4dcb-980c-19a5d61ca087(zh-cn,Expression.10).gif返回页首