Иерархия классов

Типы, связанные с технологией 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. Это базовый класс для всех контейнеров компоновки – элементов, которые содержат в себе один или более дочерних элементов и упорядочивают их в соответствии с определёнными правилами размещения.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: