Обзор библиотечных событий
Если не считать исключений, которые возбуждаются средой исполнения, то библиотечные события 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 |
События ввода через объекты-аргументы своих обработчиков передают информацию о состоянии устройств ввода при манипулировании с ними пользователей. Анализ этой информации позволяет принять решение об адекватной реакции приложения. События ввода являются маршрутизируемыми.
Дата добавления: 2015-04-15; просмотров: 916;