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


  • 相关阅读:
    操作系统笔记(六)页面置换算法 FIFO法 LRU最近最久未使用法 CLOCK法 二次机会法
    文加图, 理解Http请求与响应
    Android Retrofit 2.0使用
    Java 注解 (Annotation)你可以这样学
    MySQL 基本语句
    Java数据类型和MySql数据类型对应表
    Android Library 打造自己的 SDK,并 Maven 发布
    Java并发——线程同步Volatile与Synchronized详解
    Android getScrollX()详解
    图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()
  • 原文地址:https://www.cnblogs.com/wjchang/p/3671517.html
Copyright © 2011-2022 走看看