
- •А.А. Волосевич
- •1. Общее описание wpf
- •2. ПРостейшее Приложение wpf
- •4. Базовые концепции wpf Иерархия классов
- •Свойства зависимостей и присоединённые свойства
- •Маршрутизируемые события
- •Многопоточность в wpf
- •5. СтруктуРа Оконного приложения wpf
- •Класс Window
- •Класс Application
- •6. Компоновка
- •Размер и выравнивание
- •Основные контейнеры компоновки
- •Прокрутка и декорирование содержимого
- •7. Обзор элеменТов управления
- •Цвета и окантовка:
- •Шрифт содержимого:
- •Элементы управления содержимым
- •Списковые элементы управления
- •Прочие элементы управления
- •8. Фигуры
- •9. Цвет, кисти, прозрачность Представление цвета в wpf
- •Лучшие кисти
- •Прозрачность
- •10. Трансформации и эффекты
- •11. Классы drawing и visual
- •12. Ресурсы
- •Двоичные ресурсы
- •Логические ресурсы
- •13. Привязка данных Базовые концепции привязки данных
- •Практическое использование привязки данных
- •Конвертеры значений
- •Проверка данных
- •14. Стили и триггеры
- •15. ПрИвязка к коллекциям и шаблоны данных
- •16. Представления Данных
- •17. ШАблоны элементов управления
4. Базовые концепции wpf Иерархия классов
Типы, связанные с технологией 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). И, наконец, UIElement добавляет поддержку команд.
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. Это базовый класс для всех контейнеров компоновки – элементов, которые содержат в себе один или более дочерних элементов и упорядочивают их в соответствии с определёнными правилами компоновки.