天下网吧 >> 网吧方案 >> 网络方案 >> 正文

了解WPF中的路由事件和命令


生成事件处理程序(单击图像可查看大图)

    并非所有事件都声明为附加事件。实际上,大部分事件都不是这样。但当您需要在控件来源之外处理事件时,附加事件会提供相当大的帮助。

上一页  [1] [2] [3] [4] [5] [6] 下一页

 

    路由命令概述

    您已看到了路由事件,接下来我来介绍路由命令。WPF 的路由命令为您提供了一种特定的机制,用于将工具栏按钮和菜单项这类 UI 控件挂接到处理程序,并且无需在应用程序中加入许多关联性很强的重复代码。与正常事件处理相比,路由命令有三大优点:路由命令源元素(调用程序)能够与命令目标(处理程序)分离——它们不需要彼此引用,如果是通过事件处理程序链接,就需要相互引用。

    处理程序指出命令被禁用时,路由命令将自动启用或禁用所有相关的 UI 控件。

    您可以使用路由命令将键盘快捷方式与其他形式的输入手势(例如,手写)相关联,作为调用命令的另一种方式。

    此外,路由命令特有的 RoutedUICommand 类可以定义单一 Text 属性,用做任何控件(命令调用程序)的命令提示。与访问每个相关的调用程序控件相比,Text 属性的本地化更为容易。

    要在调用程序上声明命令,仅需在触发命令的控件上设置 Command 属性即可。

    <Button Command="ApplicationCommands.Save">Save</Button> MenuItem、Button、RadioButton、CheckBox、Hyperlink 和许多其他控件都支持 Command 属性。

    对于您想用做命令处理程序的元素,可设置 CommandBinding:

    <UserControl ...> <UserControl.CommandBindings> <CommandBinding Command="ApplicationCommands.Save"

    CanExecute="OnCanExecute" Executed="OnExecute"/>

    </UserControl.CommandBindings> ...

    </UserControl>

    CommandBinding 的 CanExecute 和 Executed 属性指向声明类代码隐藏中的方法,这些方法会在命令处理进程中被调用。此处的要点是命令调用程序既不需要了解,也不需要引用命令处理程序,处理程序不必知道是哪个元素将要调用命令。

    调用 CanExecute 来确定是否应启用命令。要启用命令,应将事件参数的 CanExecute 属性设置为 True,如下所示:

    private void OnCanExecute(object sender,

    CanExecuteRoutedEventArgs e) {

    e.CanExecute = true;

    }

    如 果命令处理程序带有定义的 Executed 方法,但没有 CanExecute 方法,命令也会被启用(在这种情况下,CanExecute 隐式为 true)。通过 Executed 方法,根据调用的命令执行相应的操作。这类与命令相关的操作可以是保存文档、提交订单、发送电子邮件等。

    操作中的路由命令

    为了使这一概念更为具体并让路由命令的益处立竿

本文来源:天下网吧 作者:网吧方案

相关文章
没有相关文章
声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下