1

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

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

我想处理两个控件(用户控件以及主窗口)上的单击命令。但是我只能得到一个。

有什么方法可以让我得到这个。

非常感谢任何帮助。

代码片段:

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();
        }
}

问候, 图沙尔

4

2 回答 2

5

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

如果您使用的是 Prism,则有一个内置的类,称为 CompositeCommand(向下滚动一点):https ://msdn.microsoft.com/en-us/library/ff921126.aspx

否则,Josh Smith 有一篇关于他的实现的非常好的文章,称为“命令组”: http: //www.codeproject.com/KB/WPF/commandgroup.aspx

您可以像这样汇总一些非常好的场景(例如,“全部保存”)。一个很好的工具包你的把戏。

于 2009-08-04T07:19:46.907 回答
0

AFAIK WPF 没有提供任何开箱即用的功能来支持不同级别的多个命令绑定,但您可以尝试以下操作:

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

不过,您可能必须测试您的父母是否真的是 IInputElement。

于 2009-08-04T07:06:56.823 回答