1. 程式人生 > >WPF Command 案例

WPF Command 案例

實現這一一個需求:定義一個命令,使用Button來發送命令,當命令送達TextBox時TextBox會被清空,若TextBox中沒有文字則命令不可被髮送。

前端:

    <StackPanel Name="stackPanel">
        <Button Content="Send command." Name="btnCmd"/>
        <TextBox Height="100" Name="tbxCmd"/>
    </StackPanel>

後臺:
    public partial class Window1 : Window
    {
        private RoutedCommand rcmd = new RoutedCommand("Clear", typeof(Window1));
        public Window1()
        {
            InitializeComponent();
            InitCmd();
        }

        private void InitCmd()
        {
            btnCmd.Command = rcmd;
            btnCmd.CommandTarget = tbxCmd;
            rcmd.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Alt));

            CommandBinding cb = new CommandBinding();
            cb.Executed += new ExecutedRoutedEventHandler(cb_Execute);
            cb.CanExecute += new CanExecuteRoutedEventHandler(cb_CanExecute);
            cb.Command = this.rcmd;

            this.stackPanel.CommandBindings.Add(cb);//把命令關聯安置在外圍控制元件上。
        }

        public void cb_Execute(object sender, ExecutedRoutedEventArgs e)
        {
            tbxCmd.Clear();
            e.Handled = true;
        }

        public void cb_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = string.IsNullOrEmpty(tbxCmd.Text) ? false : true;
            e.Handled = true;
        }
    }