zoukankan      html  css  js  c++  java
  • WPF(命令)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace WpfCommand
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                InitializeCommand();
            }
    
            // 声明命令
            private RoutedCommand clearCmd = new RoutedCommand("Clear", typeof(MainWindow));
    
    
            private void InitializeCommand()
            {
                // 命令源
                this.btn.Command = clearCmd;
                this.clearCmd.InputGestures.Add(new KeyGesture(Key.C,ModifierKeys.Alt));
    
                // 命令目标
                this.btn.CommandTarget = this.txt;
    
                // 命令绑定
                CommandBinding cb = new CommandBinding();
                cb.Command = this.clearCmd;
                cb.CanExecute += new CanExecuteRoutedEventHandler(cb_CanExecute);
                cb.Executed += new ExecutedRoutedEventHandler(cb_Execute);
    
                // 安置到外围控件上
                this.stackpanel.CommandBindings.Add(cb);
            }
    
            private void cb_CanExecute(object sender, CanExecuteRoutedEventArgs args)
            {
                if (string.IsNullOrEmpty(this.txt.Text))
                {
                    args.CanExecute = false;
                }
                else
                {
                    args.CanExecute = true;
                }
    
                args.Handled = true;
            }
    
            private void cb_Execute(object sender, ExecutedRoutedEventArgs args)
            {
                this.txt.Clear();
                args.Handled = true;
            }
        }
    }
    

    -----------------------------------------------------------

    优化代码段

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace WpfCommand
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                InitializeCommand();
            }
    
            // 声明命令
            private RoutedCommand clearCmd = new RoutedCommand("Clear", typeof(MainWindow));
    
    
            private void InitializeCommand()
            {
                // 命令源
                this.btn.Command = clearCmd;
                this.clearCmd.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Alt));
    
                //// 命令目标
                //this.btn.CommandTarget = this.txt;
    
                //// 命令绑定
                //CommandBinding cb = new CommandBinding();
                //cb.Command = this.clearCmd;
                //cb.CanExecute += new CanExecuteRoutedEventHandler(cb_CanExecute);
                //cb.Executed += new ExecutedRoutedEventHandler(cb_Execute);
    
                // 安置到外围控件上
                this.CommandBindings.Add(new CommandBinding(clearCmd,cb_Execute,cb_CanExecute));
            }
    
            private void cb_CanExecute(object sender, CanExecuteRoutedEventArgs args)
            {
                if (string.IsNullOrEmpty(this.txt.Text))
                {
                    args.CanExecute = false;
                }
                else
                {
                    args.CanExecute = true;
                }
    
                args.Handled = true;
            }
    
            private void cb_Execute(object sender, ExecutedRoutedEventArgs args)
            {
                this.txt.Clear();
                args.Handled = true;
            }
        }
    }
    


  • 相关阅读:
    【原】iOS学习之XML与JSON两种数据结构比较和各自底层实现
    ios 10 访问设置问题
    蛇形输出
    苹果内购流程详解
    iOS多线程比较
    App iCON 尺寸
    学习网站
    c++ lesson 一(命名空间输入输出)
    iOS中WebSocket的使用
    MAC TXT文本
  • 原文地址:https://www.cnblogs.com/wjchang/p/3671517.html
Copyright © 2011-2022 走看看