Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






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

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

< Window x: Class=" Tmp.window" xmlns=" https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x=" https://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);





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.