2009-06-26 1 views
0

Ich habe ein Datenformular in SL3, das Prismenbefehle mit angehängtem Verhalten für Trapping-Ereignisse verwendet.Silverlight-Befehle über Prisma, bekommen die Event-Argumente für das Ereignis?

(Es folgt ziemlich eng diese Blog-Post: http://blogs.southworks.net/dschenkelman/2009/04/18/commands-with-attached-behavior-for-silverlight-3-dataform/#comment-607)

Im Grunde ist es alles angeschlossen und funktioniert gut, aber in dem Viewmodel, kann ich nicht sehen, wie ich die Veranstaltung args für die Veranstaltung zugreifen .

Im Konstruktor der VM definiere ich den Delegaten Befehl:

this.EditEnded = new DelegateCommand<object>(o => { 
    //how can I tell if the button clicked was cancel or save? 
} 

Aber ich brauche Zugriff auf die DataFormItemEditEndedEventArgs Eigenschaft, so kann ich definieren, was getan werden muss? Ich möchte verschiedene Aktionen ausführen, abhängig davon, ob der Benutzer abgebrochen oder festgeschrieben wurde.

Antwort

2

die Parameter zurück zu bekommen, können Sie Ihre CommandBehaviorBase Klasse wie folgt abgeleitet bearbeiten könnten:

private void ItemEditEnded(object sender, DataFormItemEditEndedEventArgs e) 
{ 
    this.CommandParameter = e.EditAction; 
    ExecuteCommand(); 
} 

die EditAction Dies würde senden (oder was auch immer Sie wollen) an die CommandDelegate. In diesem Fall würden Sie nicht eine angefügte Eigenschaft für den Parameter hinzufügen. Bearbeiten Sie die angefügte Eigenschaftsklasse entsprechend (lassen Sie den CommandParameter aus). Ich bin nicht in diesen Ansatz verliebt (scheint irgendwie nicht Standard), und ich frage mich, ob jemand anderes einen alternativen Vorschlag hat.

Ich meine, Sie könnten immer Ereignisse für die verschiedenen Arten von Ereignissen hinzufügen (eine für Commit, etc.), und das ist ein wenig reiner, aber es würde eine Menge zusätzlichen Code bedeuten. Sie könnten in diesem Fall damit durchkommen, aber für andere Ereignisse wäre es unmöglich (Kommunikation von Mauskoordinaten oder etwas lächerlich).

Meine . behandelt mehr statische Parameter Im Abschnitt "Befehlsparameter" erfahren Sie, wie Sie die Methoden basierend auf einer statischen angefügten Eigenschaft sortieren.

<Button Content="Save" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Bottom" 
     cal:Click.Command="{Binding GetCompanyData}" 
     cal:Click.CommandParameter="SaveButton" 
     /> 
+0

Hallo Erik, ich habe deinen Screencast bereits gesehen, es war eine große Hilfe, dass ich so weit gekommen bin. Ich sehe immer noch nicht, wie das genutzt werden kann, um die Event-Argumente zu bekommen? Könnten Sie das näher ausführen? – ChadT

+0

Ich habe zu schnell geantwortet. Ich habe oben einen alternativen Vorschlag angegeben. –

0

Vielleicht sollten Sie separate Befehle (SaveCommand und CancelCommand) für separate Schaltflächen und Aktionen deklarieren.

Verwandte Themen