zoukankan      html  css  js  c++  java
  • wpf Command

    //基本的ICommand
     public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
    
                clearCmd clcmd = new clearCmd(tb);
                bt.Command = clcmd;
              
            }
        
        public class clearCmd : ICommand
        {
            TextBox data;
            public clearCmd(TextBox o)
            {
                data = o;
            }
            public event EventHandler CanExecuteChanged
            {
                add { CommandManager.RequerySuggested += value; }
                remove { CommandManager.RequerySuggested -= value; }
            }
    
            public bool CanExecute(object parameter)
            {
                return !string.IsNullOrEmpty(data.Text);
            }
    
            public void Execute(object parameter)
            {
                data.Clear();
            }
        }


    //路由命令RoutedCommand,本身不包含CanExecute和Executed实际执行逻辑,而是引发逻辑树遍历,查找绑定了了该路由命令的CommandBinding,由CommandBinding实际执行CanExecute和Executed。
    public partial class MainWindow : Window
        {
            private RoutedCommand clearCmd = new RoutedCommand("Clear", typeof(MainWindow));
            public MainWindow()
            {
                InitializeComponent();
                bt.Command = clearCmd;
                clearCmd.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Alt)); //这是为命令增加快捷键
                bt.CommandTarget = tb;//这里为逻辑树遍历起点
                CommandBinding cb = new CommandBinding();
                cb.Command = clearCmd;
                cb.CanExecute += Cb_CanExecute;
                cb.Executed += Cb_Executed;
                this.CommandBindings.Add(cb);
            }
    
            private void Cb_Executed(object sender, ExecutedRoutedEventArgs e)
            {
                tb.Text = "";
                e.Handled = true;
            }
    
            private void Cb_CanExecute(object sender, CanExecuteRoutedEventArgs e)
            {
                e.CanExecute = !string.IsNullOrEmpty(tb.Text);
                e.Handled = true;
            }
        }
     
  • 相关阅读:
    通过构造函数检查生成对象个数
    动手动脑二
    产生随机数的几种方法
    素数输出
    递归实现回文串
    java的方法重载
    统计单词频率
    四则运算和随机验证码
    微信小程序--家庭记账本开发--04
    微信小程序--家庭记账本开发--03
  • 原文地址:https://www.cnblogs.com/TianPing/p/9716757.html
Copyright © 2011-2022 走看看