Поделиться через


Архитектура вводимых пользователем данных и презентаций

При построении конструктора существуют несколько требующих решения проблем, касающихся входных данных пользователя. Например, управление фокусом элемента, маршрутизация входных данных мыши и клавиатуры, добавление графических элементов и вызов команд — все должны иметь общий централизованный механизм обработки входных данных пользователя. В Конструктор WPF для Visual Studio класс DesignerView обеспечивает управление всеми этими действиями и является классом, представляющим основную поверхность разработки.

Графические элементы

Графические элементы являются визуальными элементами, которые отображаются только в представлении конструктора и используются для облегчения процесса разработки. В качестве примера графического элемента можно назвать скобы захвата вокруг элемента управления, появляющиеся при выборе этого элемента. Класс DesignerView содержит коллекцию Adorners, в которой графические элементы могут добавляться и использоваться в представлении конструктора. Дополнительные сведения о графических элементах см. в разделе Архитектура графического элемента.

Перенаправление входных данных

Класс DesignerView предоставляет стандартный централизованный метод перенаправления входных данных пользователя. Процесс ввода данных состоит из следующих обобщенных этапов.

  1. Возникновение события ввода данных.

  2. Проверка нажатия.

  3. Поиск привязки ввода.

  4. Выполнение команды для привязки.

  5. В следующих разделах эти этапы рассматриваются более подробно.

Возникновение события ввода данных

При возникновении события ввода оно направляется в класс DesignerView, где выполняется проверка нажатия.

Проверка нажатия

При поступлении события ввода к экземпляру DesignerView выполняется проверка нажатия. Во время этой проверки просматриваются визуальные представления в слое графических элементов и в иерархии объектов и возвращаются следующие данные.

  • Над каким графическим элементом находится указатель мыши.

  • С каким элементом модели связан графический элемент.

  • Визуальное представление, над которым находится указатель мыши, если это не графический элемент.

  • Элемент модели, связанный с визуальным представлением.

Поиск привязки ввода

После проверки нажатия класс DesignerView пытается сопоставить событие ввода и привязку ввода. Алгоритм, используемый для поиска привязки ввода, зависит от текущего состояния конструктора.

  • Если активное на данный момент средство имеет активную задачу, привязки ввода только для этой задачи проверяются на соответствие событию ввода.

  • При вводе мыши класс DesignerView просматривает графический элемент, прошедший проверку на нажатие, выполняя поиск задачи, имеющей привязку ввода, соответствующую событию ввода. Если выполнялся захват, то используемый графический элемент — это тот элемент, который был проверен на нажатие при захвате. Если ни один графический элемент не прошел проверку нажатия, класс DesignerView будет работать с привязками ввода тех задач, которые содержатся в активном средстве.

  • При вводе с клавиатуры класс DesignerView просматривает привязки ввода задач, которые содержатся в активном средстве. Привязки ввода с клавиатуры в графических элементах пропускаются.

    Примечание

    Клавиши Ctrl, Shift и Alt для ввода мыши не пропускаются.Клавиши Ctrl, Shift и Alt хорошо работают при вводе мыши.

Выполнение команды для привязки

После получения привязки ввода для команды в привязке вызывается метод Execute. Однако команды являются интерфейсами, поэтому поведение метода Execute зависит от реализации этой команды.

См. также

Ссылки

DesignerView

Execute

Основные понятия

Архитектура графического элемента

Другие ресурсы

Общее представление о расширяемости конструктора WPF