示例#1
0
        static void OnButtonBaseClick(object sender, RoutedEventArgs e)
        {
            ButtonBase btn       = sender as ButtonBase;
            ICommand   cmd       = ButtonBaseExtensions.GetCommand(btn);
            object     parameter = ButtonBaseExtensions.GetCommandParameter(btn);

            if (cmd != null && cmd.CanExecute(parameter))
            {
                cmd.Execute(parameter);
            }
        }
示例#2
0
        static void OnCommandCanExecuteChanged(object sender, EventArgs e)
        {
            ICommand cmd = sender as ICommand;

            if (cmd != null && s_commandToButtonsMap.ContainsCommand(cmd))
            {
                s_commandToButtonsMap.ForEachButton(cmd, btn =>
                {
                    object parameter = ButtonBaseExtensions.GetCommandParameter(btn);
                    btn.IsEnabled    = cmd.CanExecute(parameter);
                });
            }
        }
示例#3
0
        static void OnCommandParameterChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            ButtonBase btn = obj as ButtonBase;

            if (btn == null)
            {
                throw new ArgumentException("You must set the CommandParameter attached property on an element that derives from ButtonBase.");
            }

            ICommand cmd = ButtonBaseExtensions.GetCommand(btn);

            if (cmd == null)
            {
                return;
            }

            object parameter = ButtonBaseExtensions.GetCommandParameter(btn);

            btn.IsEnabled = cmd.CanExecute(parameter);
        }