Aufruf-Ereignis nach-Befehl Ausführt
Ich bin auf der Suche nach einem Weg, um in der Lage sein, ein Ereignis ausgeführt werden, nachdem ein Befehl ausgeführt wird. Ich arbeite mit EditingCommands (ToggleBold, ToggleItalic...ect.) und würde gerne in der Lage sein, eine Methode direkt aufgerufen, nachdem der Befehl abgeschlossen ist, was es tut.
Ein Beispiel wäre, dass ich etwas text markiert ist, und drücken Sie Strg+B, und das führt EditingCommands.ToggleBold. Direkt nach dem text wird umgeschaltet, ich will, nennen eine Methode, update-ein Umschaltfeld, das verbunden ist mit der Auswahl FontWeight.
Ich habe versucht, mit dem Ereignis Ausgeführt, aber das ist leider für mich genannt, bevor der text betroffen ist und daher updates die Schaltfläche mit den Informationen, die die änderung von nur einer Sekunde. Kennt jemand eine Möglichkeit, um dieses? Vielen Dank für jede Hilfe!!!
Cheers
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist ein workaround, um der Warteschlange eine weitere Nachricht in Ihrem Ausgeführt handler:
Dadurch wird sichergestellt, Ihre Arbeit wird Hinzugefügt, um die Rückseite der Warteschlange und wird ausgeführt, nachdem die anderen Nachrichten der gleichen oder einer höheren Priorität.
Allerdings würde ich gerne vorschlagen, eine bessere Lösung. Wenn Sie daran denken, die Schaltfläche "Fett" ist verantwortlich für die Ausführung zwei verschiedene Befehle: Fett machen, und machen normal. Es schaltet zwischen diesen zwei Befehle, basierend auf dem aktuell gewählten text/Cursor-position. Daher könnten Sie schreiben eine benutzerdefinierte
ICommand
Implementierung kapselt zwei sub-Befehle (die komplett ungetesteten code):Dann können Sie konstruieren eine
TogglingCommand
mit zwei Kommandos: eines für bolden und eine zu unbolden text. Sie können dann binden dieButton
in der Benutzeroberfläche derActiveCommand
- Eigenschaft, um es zu ändern in wie auch immer Sie mögen, basierend auf, was passieren wird, wenn Sie auf den Befehl. Zum Beispiel, wenn Sie eineToggleButton
Sie binden würdeIsChecked
zuActiveCommand
und konvertierentrue
ist der aktive Befehl ist unbolden. Natürlich, die bolden und unbolden Befehle müssenCanExecute
Logik Ihrer eigenen, prüft den ausgewählten text.Können Sie verwenden, der Ausgeführt werden soll (Vergangenheitsform) Weitergeleitet Event-handler? (Oder vielleicht ist das, was Sie sagen, Sie versucht)