Example #1
0
 static void OnCommandChanged(Control sender, AttachedPropertyChangedEventArgs<ICommand> e)
 {
     Button button = sender as Button;
     if(button == null)
         return;
     UpdateButtonEnabled(button, e.NewValue, GetCommandParameter(button));
     button.Click -= OnClick;
     if(e.OldValue != null) {
         var handler = button.GetValue(HandlerProperty);
         e.OldValue.CanExecuteChanged -= handler.Handler;
         button.ClearValue(HandlerProperty);
     }
     if(e.NewValue != null) {
         button.Click += OnClick;
         var handler = new CanExecuteChangedHandler(button, (b, o, ea) => UpdateButtonEnabled(b, b.GetCommand(), b.GetCommandParameter()));
         e.NewValue.CanExecuteChanged += handler.Handler;
         button.SetValue(HandlerProperty, handler);
     }
 }