zoukankan      html  css  js  c++  java
  • WPF自定义命令和处发命令

    接实现ICommand接口的命令。在介绍之前,先看一下ICommand接口的原型:

    • event EventHandler CanExecuteChanged;
    • bool CanExecute(object parameter);
    • void Execute(object parameter);

      其中第一个事件为,当命令可执行状态发生改变时,可以激化此事件来通知其他对象。另外两个方法在上面已经用过同名的,在此不做重复说明。下面开始实现一个自定义直接实现ICommand接口的命令,同样实现点击源控件,清除目标控件的内容:

     1  //为了使目标控件,含有Clear()方法,所以在此一个定义接口
     2     public interface IView
     3     {
     4         void Clear();
     5     }
     6     
     7     //定义命令
     8     public class ClearCommand : ICommand
     9     {
    10         public event EventHandler CanExecuteChanged;
    11 
    12         public bool CanExecute(object parameter)
    13         {
    14             throw new System.NotImplementedException();
    15         }
    16 
    17         public void Execute(object parameter)
    18         {
    19             IView view = parameter as IView;
    20             if (view != null)
    21             {
    22                 view.Clear();
    23             }
    24         }
    25     }
    26 
    27     //自定义命令源
    28     public class MyCommandSource : System.Windows.Controls.UserControl, ICommandSource
    29     {
    30         public ICommand Command { get; set; }
    31 
    32         public object CommandParameter { get; set; }
    33 
    34         public IInputElement CommandTarget { get; set; }
    35 
    36         //重写点击处理函数,注意由于事件的优先级不同,如果命令源是button的话,下面的函数不起作用
    37         protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
    38         {
    39             base.OnMouseLeftButtonDown(e);
    40 
    41             if (this.CommandTarget != null)
    42             {
    43                 this.Command.Execute(this.CommandTarget);
    44             }
    45         }
    46     }
  • 相关阅读:
    Windows 命令行
    建议博客园提供 BT 资源发布功能——由分享 VS2005 Beta2 的历程想到的
    成功 自信 快乐(转载)
    轻松一下,加菲猫语录
    COmega 概述
    对 RBAC 几种模型的理解及初步实现构想
    DHTML 中滚动条的设置
    求婚
    终于有了自己的blog!
    VS2005 已发布!
  • 原文地址:https://www.cnblogs.com/qq247039968/p/4135238.html
Copyright © 2011-2022 走看看