更改用户交互的响应状态
当您创建自己的用户控件时,可以添加状态和状态组,以根据用户控件所处的状态来更改控件的外观。若要更改这些状态以响应用户交互(如单击),可添加事件处理程序方法以调用 GoToState 方法。
有关详细信息,请参阅 MSDN 上的 GoToState 。
注意: |
---|
在 Microsoft Silverlight 项目中,修改系统控件(例如按钮)的模板时,除了定义控件对用户交互做出的响应外,还定义了默认状态。您无法添加或删除默认状态。但是,可以更改控件处于上述不同状态下的外观,还可以遵照以下过程来更改状态。 |
更改状态以响应单击
若要更改状态,则可以使用 GoToStateAction 行为,或者可以使用事件处理程序方法。
有关使用行为的信息,请参阅向对象添加行为。
以下过程向您演示如何添加事件处理程序方法来更改状态。
如果您还没有创建状态组和状态,则可以为用户控件定义不同的视觉状态和过渡。例如,下图显示的用户控件代表扑克游戏中的一张扑克牌。“SideDisplayed”状态组中包括显示牌面朝上(“FaceUp”)和牌面朝下(“FaceDown”)的状态。
有关详细信息,请参阅定义用户控件的可视状态和过渡时间。
在“状态”下,选择“Base”以禁用状态记录功能。
在“对象和时间线”面板中,选择 [UserControl] 对象,以挂钩到对整个用户控件表面区域上的操作做出响应的事件。
在“属性”面板中,单击“事件” 以从属性视图切换至事件视图。
提示: 若要从“属性”面板切换回属性视图,请单击“属性”。
在“ MouseLeftButtonDown ”事件旁边,输入事件处理程序方法的名称,如“goClick”。
提示: 此外,只需在事件文本框中双击,即可生成事件处理程序方法的默认名称。
在按 Enter 之后,Microsoft Expression Blend 会在代码编辑器中打开用户控件的代码隐藏文件,并粘贴事件处理程序方法的代码。
private void goClick(object sender, MouseButtonEventArgs e) { }
Private Sub goClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) End Sub
有关详细信息,请参阅修改代码隐藏文件。
若要使用户控件更改状态,请使用状态的名称调用 GoToState (此链接可能指向英文页面)方法。例如,将下列粗体显示的代码粘贴到代码隐藏文件中:
private bool isFaceUp = false; private void goClick(object sender, MouseButtonEventArgs e) { if (isFaceUp) { VisualStateManager.GoToState(this, "FaceDown", true); } else { VisualStateManager.GoToState(this, "FaceUp", true); } isFaceUp = !isFaceUp; }
Private isFaceUp As Boolean = False Private Sub goClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) If isFaceUp Then VisualStateManager.GoToState(Me, "FaceDown", True) Else VisualStateManager.GoToState(Me, "FaceUp", True) End If isFaceUp = Not (isFaceUp) End Sub
生成项目 (Ctrl+Shift+B)。
测试项目 (F5),然后单击用户控件以查看其是否改变状态。
疑难解答
如果您在Expression Blend 的“事件”面板中键入名称时,遇到“无法更改代码隐藏文件。找不到下列类”错误,则可能需要切换至外部代码编辑器(通常为 Microsoft Visual Studio)来重载该解决方案。重新加载后便会加入定义缺失类的新文件。
如果您在 Visual Studio 2010 中遇到“无法加载该解决方案”错误,则可能尚未安装适用于 Visual Studio 2010 的 Silverlight 工具。安装相关工具,然后尝试在 Expression Blend 中的“事件”面板中键入名称。
有关详细信息,请参阅 Microsoft Silverlight Tools for Visual Studio 2010 (适用于 Visual Studio 2010 的 Microsoft Silverlight 工具)。
如果在测试项目 (F5) 时未显示用户控件,并且浏览器窗口未指示错误,则表示您可能尚未在启动文档中绘制用户控件的实例。该启动文档是运行应用程序时显示的第一个文档。如果用户控件是在单独的文档中创建的,则必须生成项目(按 Ctrl+Shift+B),打开启动文档(通常为 Page.xaml),再打开“资产”面板(单击“资产”),从“项目”类别中选择用户控件,然后在美工板上绘制该用户控件。
如果您在生成应用程序时遇到问题,则表示您可能没有安装正确版本的 Silverlight。
有关详细信息,请参阅安装 Silverlight 工具和运行时。
后续步骤
您可以添加动画,例如使按钮在指针移到其上方时螺旋盘转。有关详细信息,请参阅添加状态改变后显示的动画。
您可以通过 Expression 社区网站 (此链接可能指向英文页面)上提供的“操作方式”视频教程来观看有关状态和状态组的实际应用方案。
Microsoft Corporation 版权所有 ⓒ 2011。保留所有权利。