2009-06-27 11 views
1

Ich habe ein Menüelement, dem ein Befehl zugewiesen wurde (MyCommands.Indent), und zwei Textbereiche, die beide eine Eingabebindung haben, die MyCommands.Indent auslöst. Der schwierige Teil ist, dass Eingabebindungen unterschiedliche Gesten haben und ich möchte, dass diese Gesten in MenuItem geändert werden.Wie bekomme ich Eingabebindungen, die einen gerouteten Befehl auslösen würden?

Also meine Frage ist: Wie bekomme ich Eingabe-Bindungen, die diesen gerouteten Befehl auslösen würde?

Antwort

0

Der einzige Weg, den ich sehen kann, um genau das zu tun, was Sie fragen, ist, den visuellen Baum zu erkunden, um Elemente mit InputBindings zu Ihrem RoutedCommand zu finden ... kein schöner Gedanke!

Aber es könnte einen besseren Ansatz geben: Was definieren Sie nicht einfach die Verknüpfung im RoutedCommand, mit der InputGestures-Eigenschaft? Auf diese Weise brauchen Sie die InputBindings nicht mehr ...

+0

Weil ich CommandManager erweitere, damit Benutzer (nicht Entwickler) Gesten ändern können. Wenn der Benutzer Gesten ändert, wird er dies (unbewusst) tun, indem er InputBindings ändert. Stellen Sie sich vor, er wird zwei verschiedene Gesten einstellen. Was soll ich anzeigen? –

+1

der Benutzer könnte die RoutedCommand.InputGestures, anstatt InputBindings ändern ... –

+0

Ja, ich ging mit ähnlichen Lösung. Ich gehe durch alle Eingabebindungen und kombiniere alle Gesten in ihnen. Dann ändere ich RoutedCommand.InputGestures –