zoukankan      html  css  js  c++  java
  • WPF中的命令路由

    WPF中的命令路由的4个主要的概念:命令、命令源、命令目标、命令绑定。

    命令:WPF中的命令实现ICommand接口,公开了两个方法一个事件。分别是:Excute、CanEXcute、CanExecuteChanged。Execute执行与命令相关联的操作。CanExecute确认是否可以在当前命令目标上执行命令。如果命令管理器检测到命令源发生了更改,次更改可能会使得已引发但尚未有命令绑定执行的命令无效。则将引发CanExecuteChanged。ICOmmand的WPF实现的是RoutedCommand类。RoutedCommand上的Execute方法在命令目标上引发previewCanExecuted和CanExecute事件,这些时间沿着元素树以隧道忽然冒泡的形式传递。直到遇到有特定命令的CommandBinding对象。WPF提供了一组常用的路由命令,这些路由命令分别属于一下几个类。

    ApplactionCommands、NavigationCommand、ComponmentCommand、EditingCommands、MediaCommands这几个类仅仅包含RoutedCommand对象,而不包含命令的实现逻辑。实现逻辑又其上执行命令的对象负责。

    以下是WPF已经封装好的命令:

    ApplactionCommands

    copy、close、cut、pause、save、print

    MediaCommands

    Play、pause、NextTrack、IncreaseVolum、

    Record、Stop

    NavigationCommands  BrowseForward、BrowseBack、Zoom、Search
    EditingCommands AlginXXX、MoveXXX、selectXXX
    ComponmentCommands MoveXXX、SelectXXX、ScrollXXX、ExtendSelection

            其中XXX代表操作集合,例如MoveNext、MovePrevious。其中ApplactionCommands为默认的命令类,引用其中的命令时可以省略。

     命令源:调用命令的对象MenuItem、Button、KeyGesture。WPF中的命令源通常实现ICommandSource接口。ICommandSource公开3个属性Command、CommandTarget、CommandParaeter。 command是调用命令源时执行的命令。commandTarget是要在其上执行命令的对象(注意:ICommandSource上的CommandTarget只有在ICommand是RoutedCommand时才有效。如果ICommandSource上设置了CommandTarget而对应的命令不是RoutedCommand,将会忽略命令目标,如果未设置CommandTarget则具有键盘输入焦点的元素将是命令目标)。CommandParaeter是用户定义的数据类型,用于将信息传递到实现命令的处理程序。

    实现ICommandSource的WPF类包括ButtonBase、MenuItem、HyperLink、InputBinding。 ButtonBase、MenuItem、HyperLink在被单机时调用命令,并却直接使用控件的command属性绑定命令。InputBinding在与之关联的inputGesture执行时调用,并且使用KeyBinding、MouseBinding绑定某一特定的输入手势到某一命令上。

  • 相关阅读:
    [转]正则基础之 环视 Lookaround
    php简单的抓取
    [转]中国人和德国人的区别
    常用特殊符号HTML代码(转)
    Container(容器)
    在安装cute editor下, 用asp.net传送大文件
    php生成的html meta和link标记在body标签里 浏览器顶部有个空行
    gridview 列表时常用的 js
    WebBrowser 跨域之间访问的方法
    发送短信程序
  • 原文地址:https://www.cnblogs.com/dagedan/p/2744612.html
Copyright © 2011-2022 走看看