Добавление жестов в прослушивающий элемент

Есть еще один способ добавления жестов, о котором стоит упомянуть. Ранее обсуждалось, что все пользовательские элементы WPF наследуют от UIElement или ContentElement, а эти классы, в свою очередь, имеют в качестве свойства коллекцию InputBindings типа InputBindingCollection. Коллекция может быть заполнена классами KeyBinding или MouseBinding, каждый из которых связывает жест клавиатуры (представленный объектом KeyGesture ) или мыши (представленный объектом MouseGesture ) с командой. Оба класса наследуют тип InputBinding.

Например, привязать жесты с командой к объекту окна можно одним из следующих способов

<Window x:Class="Tmp.window" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="300"> <Window.InputBindings> <KeyBinding Key="F" Modifiers="Control" Command="ApplicationCommands.Find" /> <MouseBinding MouseAction="Control+LeftClick" Command="ApplicationCommands.Find" /> <KeyBinding Key="Q" Modifiers="Control" Command="ApplicationCommands.Find" /> <MouseBinding Gesture="Alt+LeftClick" Command="ApplicationCommands.Find" /> </Window.InputBindings> <Grid> <Button Command="ApplicationCommands.Find" Height="23" Width="75" > Поиск </Button> </Grid></Window>

В классе MouseBinding свойство Modifiers доступно только для чтения, поэтому жест для мыши нужно вводить в свойство MouseAction сразу целиком, как показано в только что приведенном примере.

// Клавиатурный жест Control+FKeyGesture keyGesture = new KeyGesture(Key.F, ModifierKeys.Control);KeyBinding keyBinding = new KeyBinding(ApplicationCommands.Find, keyGesture);this.InputBindings.Add(keyBinding); // Комбинированный жест Control+LeftClickMouseGesture mouseGesture = new MouseGesture(MouseAction.LeftClick, ModifierKeys.Control);MouseBinding mouseBinding = new MouseBinding(ApplicationCommands.Find, mouseGesture);this.InputBindings.Add(mouseBinding); // Клавиатурный жест Control+QInputGesture gesture = new KeyGesture(Key.Q, ModifierKeys.Control);ICommand command = ApplicationCommands.Find;keyBinding = new KeyBinding(command, (KeyGesture)gesture);this.InputBindings.Add(keyBinding); // Комбинированный жест Alt+LeftClickgesture = new MouseGesture();((MouseGesture)gesture).MouseAction = MouseAction.LeftClick;((MouseGesture)gesture).Modifiers = ModifierKeys.Alt;mouseBinding = new MouseBinding();mouseBinding.Command = command;mouseBinding.Gesture = gesture;this.InputBindings.Add(mouseBinding);







Дата добавления: 2015-04-15; просмотров: 774;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.