Frage

Ich habe Probleme beim Versuch, ein Click-Ereignis zu erhalten abzuzufeuern, nachdem der Befehl ausgeführt wird. Ich versuche, den MVVM Stil der Entwicklung zu folgen.

Hier ist das Szenario:

In meiner Anwendung habe ich ein Raster von 2 durch N Tasten, wobei N eine dynamisch geladene Reihe von Tasten ist (manchmal es 2 x 2, sein manchmal sein 5 x 9, ich weiß es nicht). Zunächst werden alle Spalten von Tasten mit Ausnahme der ersten Spalte ausgeblendet werden. Nach der ersten Spalte klicken, wird ein Befehl ausgeführt, und eine Fade-in-Animation wird gespielt und zeigt bestimmte Tasten aus der zweiten Spalte, je nachdem, welcher Taste wurde in der ersten Spalte angeklickt. Zum Beispiel wird die obere Taste in der ersten Spalte klicken, zeigt die ersten vier Tasten in der zweiten Spalte, während die untere Taste in der ersten Spalte wird die ersten drei Tasten in der zweiten Spalte zeigen.

Hier ist das Problem:

Für jede Taste, habe ich einen Commandparameter zu jedem der Taste in der ersten Spalte. Wenn der Befehl ausgeführt wird, werden Daten verarbeitet, und eine Eigenschaft wird in der VM festgelegt, die besagen, welche Taste gedrückt wurde (ich nur die Command wieder verwenden). Während die Daten verarbeitet werden, möchte ich den Benutzer die nächste Gruppe von Schaltflächen angezeigt werden soll. Ich habe einen Klick Ereignis, das die Commandparameter aus der VM und spielt eine Animation, die richtigen Tasten zu zeigen, nimmt.

Allerdings ist das Problem, dass WPF mag zuerst das Click-Ereignis zu tun, bevor der Befehl gefeuert wird. Dies ist ein Problem, da die Eigenschaft in der VM, die sagt, welche Schaltfläche geklickt wurde nicht fertig!

Damit bringt mich auf ein paar Fragen ...

1) Gibt es eine Möglichkeit, den Befehl auszuführen, bevor das Ereignis Brennen?

2) Mache ich es richtig? : P

War es hilfreich?

Lösung

Statt einen Click-Ereignishandler verwenden, Sie könnten nur Setup DataTriggers auf Tasten.

Sie konnten auf die Eigenschaft in Ihrem Ansichtsmodell reagieren, Knöpfe verstecken Sie nicht angezeigt werden sollen, und zeigt auf die Schaltfläche Sie tun.

Das Schöne daran ist, dass Ihre Ansicht vollständig in XAML getan werden kann, und das Ansichtsmodell ist nur Zustand versetzt (das heißt: ich in diesem Zustand bin) und die Ansicht automatisch aktualisiert bleiben, da die Bindung bewirkt, dass die neue Datatrigger abzufeuern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top