2009-08-04 69 views
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(); 
     } 
} 

问候, 图莎尔

回答

5

您可能试图聚合多个命令,这是很自然的事。

如果使用的是棱镜,没有内置此一类叫做CompositeCommand(向下滚动了一下):https://msdn.microsoft.com/en-us/library/ff921126.aspx

否则,约什 - 史密斯对他实施一篇很好的文章叫做“命令组” :http://www.codeproject.com/KB/WPF/commandgroup.aspx

有一些非常好的方案可以像这样汇总(例如“全部保存”)。一个很好的工具,你的伎俩袋。

0

AFAIK WPF犯规提供任何开箱各级,支持多种化CommandBindings,但你可以尝试以下方法:

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

虽然您可能需要测试父母是否真的是IInputElement。