Определите привязки клавиш в UserControl, но применимы ли они для всего окна?
Существует целый ряд сочетаний клавиш, которые я хотел бы использовать в масштабах всего приложения, независимо от того, где в данный момент находится фокус.
На данный момент у меня есть те, определенные как <Window.InputBindings>
в моем главном окне XAML. Все хорошо, но...
Лента инкапсулирована как отдельный пользовательский элемент управления, и все сочетания клавиш, естественно, связаны с кнопками, которые находятся на этой ленте.
Следовательно, мне не очень нравится запах двух частей логики приложения, имеющих одинаковую функциональность, распределенных по двум классам.
В идеале я хотел бы определить привязки клавиш как <Window.InputBindings>
, но в UserControl, а не в окне. Очевидно, что это не может быть сделано с синтаксисом XAML, но только <UserControl.InputBindings>
- увы, это сделало бы их доступными, только когда фокус находится на ленте (что означает никогда).
Какие-либо предложения?
Спасибо Алекс
1 ответ
В конструкторе вашего элемента управления или в его обработчике событий Loaded() пусть он найдет окно, в котором он находится (рекурсивно используйте VisualTreeHelper.GetParent(this), пока GetType не станет Window...), затем добавьте к нему требуемые InputBindings. окно.