Типы, связанные с технологией WPF, сгруппированы в несколько сборок. Сборка PresentationFramework.dll содержит классы верхнего уровня – окна, панели, элементы управления. В этой сборке находятся типы для реализации высокоуровневых программных абстракций, например, стилей. Сборка PresentationCore.dll содержит базовые классы, от которых унаследованы все фигуры и элементы управления. В WindowsBase.dll описаны ещё более базовые ингредиенты, которые потенциально могут использоваться вне WPF. Кроме этого, частью WPF является библиотека milcore.dll, написанная на неуправляемом коде. Функции библиотеки milcore.dll транслируют визуальные элементы в примитивы Direct3D.
Рассмотрим основу иерархии классов WPF (рис. 3).
Рис. 3. Фундаментальные классы WPF.
1. System.Threading.DispatcherObject. Приложения WPF используют однопоточную модель (single-thread affinity, STA) – весь пользовательский интерфейс принадлежит единственному потоку. Чтобы содействовать работе модели STA, каждое приложение WPF управляется диспетчером, координирующим обработку сообщений. Будучи унаследованным от DispatcherObject, объект может удостовериться, выполняется ли его код в правильном потоке, и обратиться к диспетчеру, чтобы направить код в поток интерфейса.
|
|
2. System.Windows.DependencyObject. WPF поддерживает мощную модель свойств зависимостей (dependency property), которая положена в основу таких средств, как уведомления об изменениях, наследуемые значения по умолчанию и экономное хранение информации свойств. Наследуясь от DependencyObject, классы WPF получают поддержку свойств зависимости.
3. System.Windows.Media.Visual. Любой класс, унаследованный от Visual, обладает способностью отображаться в окне. Класс Visual инкапсулирует инструкции рисования, включая отсечения, прозрачность и настройки трансформации фигур. Этот класс также обеспечивает связь между управляемыми библиотеками WPF и библиотекой milcore.dll.
4. System.Windows.UIElement. Этот класс добавляет поддержку таких сущностей WPF, как компоновка, ввод, фокус и события (layout, input, focus, events – LIFE). В UIElement определён двухэтапный процесс измерения и организации компоновки. Этот класс вводит поддержку расширенной системы передачи событий, именуемой маршрутизируемыми событиями (routed events).
5. System.Windows.FrameworkElement. Класс FrameworkElement добавляет поддержку привязки данных, анимации, стилей и ресурсов. Этот класс также реализует некоторые абстрактные концепции из UIElement.
6. System.Windows.Controls.Control. Элемент управления (control) – это класс, который может взаимодействовать с пользователем. Примерами элементов управления являются TextBox (поле для ввода текста) и Button (кнопка). Класс Control добавляет к FrameworkElement свойства для установки шрифта, а также цветов переднего плана и фона. Но наиболее интересная деталь, которую он предоставляет – это поддержка шаблонов, которые позволяют заменять стандартный внешний вид элемента управления вашим собственным.
|
|
7. System.Windows.Controls.ContentControl. Это базовый класс для всех элементов управления, которые имеют отдельный фрагмент содержимого. Этот фрагмент может быть чем угодно – от обычной строки до панели компоновки, содержащей комбинацию фигур и других элементов управления.
8. System.Windows.Controls.ItemsControl. Родительский класс для всех элементов управления, которые отображают коллекцию каких-то единиц информации (например, ListBox и TreeView). Списковый элемент управления гибок – используя встроенные средства класса ItemsControl, можно трансформировать обычный ListBox в список переключателей, список флажков, ряд картинок или комбинацию разных элементов по своему выбору.
9. System.Windows.Shapes.Shape. От этого класса наследуются базовые фигуры графики, такие как Rectangle, Polygon, Ellipse, Line и Path. Эти фигуры могут быть использованы наряду с более традиционными визуальными элементами вроде кнопок и текстовых полей.
10. System.Windows.Controls.Panel. Это базовый класс для всех контейнеров компоновки – элементов, которые содержат в себе один или более дочерних элементов и упорядочивают их в соответствии с определёнными правилами размещения.