Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Обзор библиотечных событий
Если не считать исключений, которые возбуждаются средой исполнения, то библиотечные события WPF делятся на 4 группы:
- События времени жизни - возникают при загрузке, инициализации и выгрузке элемента, окна или приложения
- События ввода:
- События клавиатуры - возникают в результате воздействия на клавиатуру
- События мыши - возбуждаются манипулированием мыши
- События стило (стилуса, пера) - использование устройства ввода на планшетных компьютерах, которое заменяет мышь
События времени жизни всех элементов управления наследуются от класса FrameworkElement и указаны в таблице
События времени жизни элементов
| Событие
| Описание
| Initialized
| Данное событие является обычным, а не перенаправленным, и возникает после создания элемента и определения всех его полей и свойств. Такое состояние характеризуется булевым свойством IsInitialized=true. На этом этапе еще не применены стили и привязка данных. Соседние элементы окна могут быть еще не полностью созданными
| Loaded
| Возникает после события Initialized, когда все окно закончило инициализацию и дополнительно были применены стили и привязка данных к элементу. Это последний этап, за которым следует визуализация элемента. В этот момент он принимает состояние IsLoaded=true
| Unloaded
| Возбуждается сразу после удаления элемента из контейнера или его закрытия
| Класс FrameworkElement наследует и реализует интерфейс ISupportInitialize, объявляющий методы BeginInit() и EndInit(). Эти методы автоматически вызываются анализатором разметки, но если создавать элементы в процедурном коде, то их следует вызывать вручную. После вызова метода EndInit() инициализация элемента считается завершенной и возбуждается сигнализирующее событие Initialized.
Любой составной объект, имеющий ссылки на другие объекты, оформленные в нем как свойства типов адресуемых объектов, начинает свое создание с переферийных объектов. Эту нужно для того, чтобы при создании самого родителя его свойствам можно было присвоить уже готовые адреса вспомогательных объектов. Дерево элементов WPF тоже начинает строиться с листьев, то есть глубоко вложенные элементы инициализируются до того, как будут инициализированы их родительские контейнеры.
Есть еще события времени жизни окна:
События жизни окна
| Событие
| Описание
| Activated
| Возбуждается при получении окном фокуса ввода системы. По функциональности эквивалентно событию GotFocus элемента управления
| Closed
| Возбуждается после закрытия окна, когда еще объекты дерева являются доступными и их событие Unloaded еще не возникло
| Closing
| Возникает при получении команды на закрытие окна, которую еще ее можно отменить присвоением в обработчике свойству Cancel=true через аргумент CancelEventArgs. Если пользователь не закрывал окно, а просто вышел из системы, то нужно обрабатывать событие уровня приложения System.Windows.Application.SessionEnding
| ContentRendered
| Возникает сразу после первой визуализации окна
| Deactivated
| Возбуждается каждый раз, когда окно теряет фокус ввода при свертывании или переключении на другое окно
| LocationChanged
| Происходит, когда местоположение окна изменяется
| SourceInitialized
| Предусмотрено для поддержки взаимодействия с Win32
| StateChanged
| Происходит при изменении окном свойства WindowState
| События ввода через объекты-аргументы своих обработчиков передают информацию о состоянии устройств ввода при манипулировании с ними пользователей. Анализ этой информации позволяет принять решение об адекватной реакции приложения. События ввода являются маршрутизируемыми.
|