예제 #1
0
        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);
        }
예제 #2
0
        static void OnCommandChanged(DependencyObject source, DependencyPropertyChangedEventArgs args)
        {
            BindableCommandBinding sender = (BindableCommandBinding)source;

            sender.OnCommandChanged(args);
        }