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