2011-01-03 19 views
4

ausgeführt wird, denke ich, die Frage im Titel ist klar enough.What passiert, wenn iWas passiert eigentlich, wenn ApplicationCommands.Close

ApplicationCommands.Close.Execute(null,null)

von meinem Viewmodel-Klasse aufrufen.

Ich habe einen Modeldialog, der eine usercontrol zeigt. Ich habe eine Befehlsbindung an eine Schaltfläche in der Benutzersteuerung, die in der Viewmodel ausgeführt wird. Ich möchte den Dialog nach der Ausführung des Befehls geschlossen.Es kann mit dem oben genannten erfolgen Befehl an das Ende des ausgeführten Ereignisses.

Aber ich frage mich, ob dies der richtige Ansatz ist.Wird dies einen unerwünschten Effekt verursachen?

Antwort

3

Leider wird dies nicht funktionieren.

ApplicationCommands.Close ist ein RoutedUiEvent, das ein Commandtarget (beliebiges IInputelement) erfordert. Es verwendet dieses Befehlsziel, um ein routedevent zu erzeugen.

Sie können dieses routedevent dann mithilfe einer Befehlsbindung behandeln.

Aus dem ViewModel können Sie ApplicationCommands.Close an Close Button binden und dann das geroutete close-Ereignis in Ihrem Fenster behandeln.

jedoch nicht ApplicationCommands.Close.Execute(null,null) in Ihrem Ansichtsmodell nach dem anderen Befehl aufrufen kann, als Sie keine Command (die zweite null)

Es gibt auch andere Themen wie diese How should the ViewModel close the form? dem Detail verschiedene Methoden, um dies zu acheive haben ausgeführt.

http://adammills.wordpress.com/2011/02/16/mvvm-uses-for-applicationcommands-close/

Verwandte Themen