Wpf 多命令绑定

Wpf 多命令绑定,wpf,xaml,commandbinding,Wpf,Xaml,Commandbinding,是否可以将多个命令绑定到按钮 我有一个用户控件,我在主应用程序(父应用程序)中调用它 我想在两个控件(用户控件和主窗口)上处理单击命令。然而,我只能得到一个 我有什么办法可以得到这个 非常感谢您的帮助 代码段: public class MainWindowFooterCommands { public static readonly RoutedUICommand FooterClickLocalCommand = new RoutedUICommand("Local Button C

是否可以将多个命令绑定到按钮

我有一个用户控件,我在主应用程序(父应用程序)中调用它

我想在两个控件(用户控件和主窗口)上处理单击命令。然而,我只能得到一个

我有什么办法可以得到这个

非常感谢您的帮助

代码段:

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();
        }
}
问候,,
Tushar

AFAIK WPF不提供任何现成的功能来支持不同级别的多个命令绑定,但您可以尝试以下方法:

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

不过,您可能需要测试您的父级是否真的是IInputElement。

AFAIK WPF不提供任何现成的功能来支持不同级别的多个CommandBinding,但您可以尝试以下方法:

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

不过,您可能需要测试您的父元素是否真的是IInputElement。

您可能正在尝试聚合多个命令,这是一件很自然的事情

如果您使用的是Prism,则有一个内置的类称为CompositeCommand(向下滚动一点):

另外,Josh Smith有一篇关于其实现的非常好的文章,称为“命令组”:


有一些非常好的场景可以这样汇总(例如,“全部保存”)。这是一个很好的技巧工具。

您可能正在尝试聚合多个命令,这是一件很自然的事情

如果您使用的是Prism,则有一个内置的类称为CompositeCommand(向下滚动一点):

另外,Josh Smith有一篇关于其实现的非常好的文章,称为“命令组”:


有一些非常好的场景可以这样汇总(例如,“全部保存”)。这是一个很好的技巧工具。

这能回答你的问题吗?这回答了你的问题吗?