2010-06-07 1 views
7

Wenn ich die Command in einer Button Steuerung der Event-Handler verwenden, die mit Click Ereignis verbunden wird nie ausgelöst,WPF-Befehl mit Click-Ereignishandler

Wie kann ich die Command verwenden und handhaben die Click Ereignishandler?

Antwort

17

Sie können den ICommand an eine andere Eigenschaft anhängen und aus dem Click-Handler ausführen.

<Button x:Name="MyButton" Tag="{x:Static ApplicationCommands.Stop}" Click="MyButton_Click" /> 

und im Handler:

private void MyButton_Click(object sender, RoutedEventArgs e) 
{ 
    var button = sender as Button; 
    if (button != null) 
    { 
     var command = button.Tag as ICommand; 
     if (command != null) 
      command.Execute(button.CommandParameter); 
    } 
} 

Sie müssen auch einige zusätzliche Arbeit tun, wenn Sie den Befehl deaktivieren Verhalten halten wollen.

+0

habe ich es, dank John – Tomas1

-3

Ein Befehl ist eine Art Wochenereignis. Der gute Gedanke an Befehle ist, dass Sie keine Ereignisse verwenden müssen. Tatsächlich müssen Sie Code überhaupt nicht verwenden und Ereignisse, wenn Sie ein Viewmodel-Muster verwenden. Siehe Relais Befehle: http://blog.galasoft.ch/archive/2009/09/26/using-relaycommands-in-silverlight-and-wpf.aspx

+1

Das ist nicht richtig, Sie Code hinter verwenden müssen, wenn Sie Sie Dinge wie SeletedItem im Ansichtsmodell aktualisieren möchten anzuzeigen oder behandeln in einem spezifische Art und Weise wie Selektionen funktionieren. –