In einer WPF/MVVM-Anwendung versuche ich eine code-effiziente Möglichkeit zu finden, den Hauptansichts-Cursor vor jeder längeren Operation auf Cursors.Wait
festzulegen und nach Abschluss auf den Standardcursor zurückzusetzen.Wie wird die Ausführung eines RoutedCommand in der Ansicht abgefangen? (WPF/MVVM)
Da alle Operationen mit gerouteten Befehlen aufgerufen werden, möchte ich eine Möglichkeit finden, die Befehlsausführung abzufangen, idealerweise durch Erstellen einer generischen Befehlsklasse, die eine Instanz eines integrierten gerouteten Befehls umschließt, aber nicht visualisieren, wie das geht.
Insbesondere ist die RoutedCommand.Execute
Methode nicht virtuell, also brauche ich einen anderen Mechanismus, um seine Anrufe abzufangen. Ich bin mir auch nicht sicher, wie eine Instanz der generischen Befehlsklasse auf die Ansicht verweisen würde, für die sie den Cursor setzen soll.
Bitte um Rat fragen?
Danke,
Tim
Es Vielleicht ist das ein Grund, dass Sie das tun wollen, was etwas kompliziert klingt, aber gibt es einen Grund, warum Sie nicht einfach eine CurrentCursor-Eigenschaft in Ihrem ViewModel erstellen und den Cursor in Ihrer Ansicht (en) an diese Eigenschaft binden können? –
@Wonko. Danke - das ist eine gute Frage und ich stimme zu, dass dies der MVVM-konforme Ansatz zu sein scheint. Es bedeutet jedoch, dass ich die gleiche zweizeilige Codeänderung auf viele ViewModel-Methoden anwenden muss, während ich hoffte, den Cursorverwaltungscode zu zentralisieren. Eine zweite Komplikation besteht darin, dass meine Ansicht einige Steuerelemente enthält, die geroutete Befehle akzeptieren. Wie verwende ich die gleiche Logik für ihre Operationen, da sie nicht Teil des ViewModels sind? –