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;
            }
        }
    }
    


  • 相关阅读:
    [YTU]_2536( C++ 长方体继承自矩形)
    [YTU]_2560(C++继承(改错题))
    [YTU]_2532(投简历)
    [YTU]_2621(B 继承 圆到圆柱体)
    stl
    noip2008双栈排序
    倍增入门水题
    noip模拟【ping】
    dp入门(LIS,LCS)
    【Luogu 1799】数列
  • 原文地址:https://www.cnblogs.com/wjchang/p/3671517.html
Copyright © 2011-2022 走看看