public static CommandBinding CreateCommandBinding( this FrameworkElement element, RoutedUICommand command, Binding binding) { var bindable = new BindableCommandBinding(); bindable.RoutedCommand = command; bindable.CommandBinding = new CommandBinding(command); bindable.SetBinding(BindableCommandBinding.CommandProperty, binding); var method = typeof(FrameworkElement).GetMethod("AddLogicalChild", BindingFlags.NonPublic | BindingFlags.Instance); method.Invoke(element, new[] { bindable }); element.Resources.Add(Guid.NewGuid(), bindable); //Prevent GC from collecting BindableCommandBinding element.CommandBindings.Add(bindable.CommandBinding); return(bindable.CommandBinding); }
static void OnCommandChanged(DependencyObject source, DependencyPropertyChangedEventArgs args) { BindableCommandBinding sender = (BindableCommandBinding)source; sender.OnCommandChanged(args); }