Определите привязки клавиш в UserControl, но применимы ли они для всего окна? - PullRequest
4 голосов
/ 27 ноября 2011

Существует несколько сочетаний клавиш, которые я хотел бы использовать в масштабах всего приложения, независимо от того, где в данный момент находится фокус.

На данный момент у меня есть те, которые определены как <Window.InputBindings> вXAML моего главного окна.Все хорошо, но ...
Лента инкапсулирована как отдельный UserControl, и все сочетания клавиш, естественно, связаны с кнопками на этой ленте.
Следовательно, мне не очень нравитсязапах двух частей логики приложения, имеющих одинаковую функциональность, разбросан по двум классам.

В идеале я хотел бы определить привязки клавиш как <Window.InputBindings>, но в UserControl, а не в окне.Очевидно, что это невозможно сделать с помощью синтаксиса XAML, но только <UserControl.InputBindings> - увы, это сделало бы их доступными, только если фокус находится на ленте (что означает , никогда ).

Любойпредложения?

Спасибо, Алекс

1 Ответ

2 голосов
/ 27 ноября 2011

В конструкторе вашего элемента управления или в его обработчике событий Loaded () пусть он найдет окно, в котором он находится (используйте VisualTreeHelper.GetParent (this) рекурсивно, пока GetType не станет Window ...), затем добавьте InputBindings, который выхочу в это окно.

...