1

Is it possible to bind the multiple commands to the button.

I have a user control, which i am calling in my main application (parent application).

I want to handle a click command on both the controls (the user control as well as on the main window). However i am only able to get one.

Is there any way in which i can get this.

Any help is really appreciated.

Code Snippet:

public class MainWindowFooterCommands
{
    public static readonly RoutedUICommand FooterClickLocalCommand = new RoutedUICommand("Local Button Command", "FooterClickLocalCommand", typeof(MainWindowFooterCommands));
}

private void MainWindowFooterBindCommands()
{
    CommandBinding cmdBindingBXClick = new CommandBinding(MainWindowFooterCommands.FooterClickLocalCommand);
        cmdBindingBXClick.Executed += ClickCommandHandler;
        CommandBindings.Add(cmdBindingBXClick);
}


void ClickCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
    //Do Something
}


//Parent Control holding an instance of the footer control.
class MainWindow {

    public MainWindow() 
    {
        CommandBinding cmdBindingBXClick1 = new CommandBinding(MainWindowFooterCommands.BXClickMainWindowCommand);
        cmdBindingBXClick1.Executed += LoadParent;  
        CommandBindings.Add(cmdBindingBXClick1);
    }

        public void LoadParent(object sender, ExecutedRoutedEventArgs e)
        {   
        LoadParentWindow();
        }
}

Regards, Tushar

1

2 Answers 2

5

You might be trying to aggregate multiple commands, which is a natural thing to want to do.

If you are using Prism, there is a class builtin for this called the CompositeCommand (scroll down a bit): https://msdn.microsoft.com/en-us/library/ff921126.aspx

Otherwise, Josh Smith has a very good article on his implementation called a "Command Group": http://www.codeproject.com/KB/WPF/commandgroup.aspx

There are some very nice scenarios you can rollup like this (for instance, "Save All"). A good tool for your bag of tricks.

Sign up to request clarification or add additional context in comments.

Comments

0

AFAIK WPF doesnt offer anything out of the box to support multiple commandbindings at various levels, but you could try the following:

void ClickCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
    IInputElement parent = (IInputElement) LogicalTreeHelper.GetParent((DependencyObject)sender);
    MainWindowFooterCommands.BXClickMainWindowCommand.Execute(e.Parameter, parent);
}

You might have to test whether your parent really is an IInputElement, though.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.