更改用户交互的响应状态
当您创建自己的用户控件时,可以添加状态和状态组,以根据用户控件所处的状态来更改控件的外观。若要更改这些状态以响应用户交互(如鼠标单击),可添加事件处理程序方法以调用 GoToState(此链接可能指向英文页面)方法。
说明: |
---|
修改系统控件(如按钮)的模板时,除了定义控件对用户交互做出的响应外,还定义了默认状态。您不能添加或删除默认状态。但是,可以更改控件处于上述不同状态下的外观,还可以遵照以下过程来更改状态。 |
更改响应鼠标单击的状态
如果尚未创建状态组和状态,可以定义用户控件的可视状态和过渡时间。例如,下图显示的用户控件代表扑克游戏中的一张扑克牌。“SideDisplayed”状态组中包括显示牌面朝上(“FaceUp”)和牌面朝下(“FaceDown”)的状态。
在“状态”下,选择“Base”以禁用状态记录功能。
在“对象和时间线”下,选择“[UserControl]”对象,以挂钩到对整个用户控件表面区域上的操作做出响应的事件。
在“属性”面板中,单击“事件” 按钮,即可从属性视图切换至事件视图。
提示: 若要从属性视图切换回“属性”面板,请单击“属性” 按钮。
在“MouseLeftButtonDown”事件旁边,输入事件处理程序方法的名称,如“goClick”。
提示: 此外,只需在事件文本框中双击,即可生成事件处理程序方法的默认名称。
按 ENTER 后,Microsoft Expression Blend 将会在 Microsoft Visual Studio 2008(如果已安装)中打开项目。如果没有安装代码编辑器,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
有关 Visual Studio 2008 与 Expression Blend 的互操作性的详细信息,请参阅编辑代码隐藏文件。
若要使用户控件更改状态,请使用状态的名称调用 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 2008 中遇到“无法加载该解决方案”错误,则可能尚未安装 Microsoft Silverlight Tools for Visual Studio 2008(此链接可能指向英文页面)。安装相关工具,然后尝试在 Expression Blend 的“事件”面板中双击。
如果在测试项目 (F5) 时未显示用户控件,并且浏览器窗口未指示错误,则表示您可能尚未在启动文档中绘制用户控件的实例。该启动文档是运行应用程序时显示的第一个文档。如果用户控件是在单独的文档中创建的,则必须生成项目 (Ctrl+Shift+B),打开启动文档(通常为 Page.xaml),再打开“资源库”,从“自定义控件”选项卡中选择用户控件,然后在美工板上绘制该用户控件。
如果您在生成应用程序时遇到问题,则表示您可能没有安装正确版本的 Microsoft Silverlight。有关详细信息,请参阅安装 Silverlight 2 工具和运行时。
后续步骤
您可以添加动画,例如使按钮在鼠标指针移到其上方时螺旋盘转。有关详细信息,请参阅添加状态改变后显示的动画。
您可以通过 Expression 社区网站(此链接可能指向英文页面)上提供的“操作方式”视频教程来观看有关状态和状态组的实际应用方案。