2009-08-04 16 views
1

Ist es möglich, die mehreren Befehle an die Schaltfläche zu binden.Multiple Command Binding

Ich habe ein Benutzersteuerelement, das ich in meiner Hauptanwendung (Hauptanwendung) anrufe.

Ich möchte einen Klick-Befehl auf beiden Steuerelementen (das Benutzersteuerelement sowie im Hauptfenster) behandeln. Allerdings kann ich nur eins bekommen.

Gibt es eine Möglichkeit, wie ich das bekommen kann.

Jede Hilfe wird wirklich geschätzt.

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

Grüße, Tushar

Antwort

5

Sie könnten versuchen, mehrere Befehle zusammenzufassen, was eine natürliche Sache ist, die Sie tun möchten.

Wenn Sie Prism verwenden, gibt es eine Klasse für diese gebautet die Composite genannt (ein wenig nach unten scrollen): https://msdn.microsoft.com/en-us/library/ff921126.aspx

Ansonsten Josh Smith einen sehr guten Artikel über seine Umsetzung hat eine „Command Group“ genannt : http://www.codeproject.com/KB/WPF/commandgroup.aspx

Es gibt einige sehr schöne Szenarien, die Sie so zusammenrollen können (zum Beispiel "Alle speichern"). Ein gutes Werkzeug für deine Trickkiste.

0

AFAIK WPF etwas aus der Box bieten tut mehrere Commandbindings auf verschiedenen Ebenen zu unterstützen, aber man konnte folgendes versuchen:

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

Möglicherweise müssen Sie testen, ob Ihr Elternteil wirklich ein IInputElement ist.