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     }
  • 相关阅读:
    Linux命令(25)userdel命令
    Linux命令(24)clear命令
    Linux命令(23)usermod命令
    Linux命令(22)useradd命令
    c++primer 练习9.28
    概率论python代码
    python自写软件(三)
    Linux描述符表和描述符高速缓存
    操作系统的坑(更新)
    python自写软件(二)
  • 原文地址:https://www.cnblogs.com/qq247039968/p/4135238.html
Copyright © 2011-2022 走看看