Урок 1. Введение в WPF, основные концепции
Нашу серию уроков по WPF мы начнем с обзора данной технологии. Сегодня мы познакомимся с XAML (расширяемый язык разметки приложений) и основным особенностями WPF - разделение интерфейсов, средства управления, мультимедиа, а также узнаем недостатки WPF.
Расширяемый язык разметки приложений
Вы можете создавать макеты WPF с помощью конструктора Visual Studio. Как и в случае с Windows Forms, вы можете перетаскивать элементы управления из панели инструментов на поверхность дизайна окна. Когда вы создаете дизайн пользовательского интерфейса таким образом, Visual Studio генерирует код с использованием нового языка под названием "Расширяемый язык разметки приложений". Это сокращенно XAML.
В отличие от Windows Forms, WPF не скрывает код, создаваемый дизайнером. Код XAML прост для просмотра и, поскольку он основан на XML, прост для понимания. На самом деле, с ним так легко работать, что вам активно рекомендуется редактировать его вручную. Во многих случаях проще работать с XML-элементами и атрибутами напрямую, чем создавать те же результаты с помощью дизайнера. На протяжении всего урока мы будем концентрироваться на XAML, а не на работе с дизайнерами, так как это позволяет лучше понять технологию.
XAML имеет более широкие области применения, чем создание пользовательских интерфейсов WPF. Он также является основой для разработки интерфейсов Silverlight, программного обеспечения Windows Phone и приложений для планшетов с Windows 8. Существуют различия между различными технологиями на основе XAML, но изучение одного варианта облегчает переход к другим. Мы сосредоточимся на версии XAML WPF, поскольку она единственная, которая позволяет создавать приложения с полным доступом к функциям операционной системы Microsoft Windows.
Разделение интересов
Отличной особенностью WPF и приложений на основе XAML в целом является разделение пользовательского интерфейса и другого кода в вашем программном обеспечении. Приложения Windows Forms сильно зависят от событий, а обработчики событий привязаны к визуальным элементам управления. WPF разделяет код XAML, который определяет дизайн приложения, и фоновый код, который вы создаете с использованием языка .NET, такого как C#.
Хотя вы можете подключить код для управления событиями, чаще всего используются мощные технологии привязки данных и управления данными XAML. Они позволяют свободно ссылаться на свойства и методы по имени в атрибутах XML. Во время выполнения элементы управления настраиваются в соответствии с названными свойствами. Кнопки и другие элементы управления подключены к командам, которые выполняются в ответ на действия пользователя, при этом состояние связанных элементов управления автоматически изменяется в зависимости от доступности команд.
Дизайн и код настолько слабо связаны, что разные люди могут работать над этими отдельными элементами. Например, разработчик может создавать классы, содержащие свойства для привязки и команды для выполнения, не зная дизайна пользовательского интерфейса. Имея минимальные сведения о базовом коде, дизайнер пользовательского интерфейса может создать XAML отдельно, чтобы разработчик мог позже интегрировать его в проект. Microsoft даже создала отдельные инструменты для этих двух ролей. Разработчикам рекомендуется использовать Visual Studio, в то время как у дизайнеров есть инструменты Expression Studio, включая Blend.
Дальнейшее разделение проблем обеспечивается стилизацией. Используя аналогичную концепцию разделения содержимого и стиля на веб-страницах, предоставляемую HTML и CSS, вы можете определять стили с помощью XAML и применять их к нескольким элементам управления. Например, если вы решите, что все кнопки в вашем программном обеспечении должны быть красными и выделяться жирным шрифтом, вы можете определить стиль для этого и добавить стиль ко всем кнопкам. Если позже вы решите, что синий цвет будет лучше, вы можете обновить стиль в одном месте, и все элементы управления, использующие этот стиль, примут новый вид.
Улучшенные средства управления
WPF изменяет способ работы элементов управления пользовательского интерфейса. Большинство элементов управления, которые удобны разработчикам Windows Forms, имеют эквиваленты в WPF. Элементы управления по-прежнему содержат свойства, позволяющие изменять их внешний вид и поведение, такие как параметры цвета и шрифта. Для простых приложений этого может быть достаточно.
Чтобы обеспечить более современные возможности, элементы управления WPF намного мощнее. Во-первых, они поддаются составлению. Это означает, что вы можете вложить элементы управления друг в друга. Например, кнопка не обязательно должна содержать только текстовое описание. Вы можете включить графический элемент в дополнение к тексту. Выпадающий список может состоять не только из ряда текстовых элементов. Каждый выбираемый пользователем параметр может быть изображением, анимацией или даже видео.
Элементы управления WPF основаны на шаблонах. Шаблон определяется с помощью XAML и включает в себя все графические элементы, которые позволяют элементу управления функционировать правильно. Например, шаблон кнопки включает цвета фона, затенение, линии, кривые и области содержимого, которые составляют кнопку. Эта информация присутствует для каждого состояния кнопки, такого как включенное, отключенное, сфокусированное, наведенное и нажатое состояния. Шаблон также включает в себя детали для анимированных переходов между состояниями.
При создании своих приложений вы можете изменять шаблоны существующих элементов управления. Это позволяет вам изменять внешний вид стандартных элементов управления в соответствии с дизайном разрабатываемого вами программного обеспечения.
Мультимедиа
Windows Forms была довольно ограниченной в своей поддержке мультимедиа. WPF исправляет это с помощью стандартных элементов управления для изображений, аудио и видео. Аудио и видео могут воспроизводиться в различных форматах и интегрироваться в элементы управления с помощью композиции управления. Вы можете легко включить мультимедиа, которое воспроизводится автоматически или управляется действиями пользователя.
Недостатки WPF
WPF - очень мощная технология, но у нее есть некоторые недостатки. Для опытных разработчиков Windows Forms разница между этими двумя методами велика. Гибкость WPF приводит к увеличению сложности в некоторых сценариях. Это означает, что WPF имеет более крутую кривую обучения, чем Windows Forms, и что переход на WPF требует большого обучения. Тот факт, что WPF можно использовать аналогично Windows Forms, можно рассматривать как недостаток. Хотя это позволяет ускорить миграцию, иногда это означает, что новые разработчики WPF не осознают мощь новой парадигмы.
Еще одна проблема с WPF для существующих разработчиков пользовательского интерфейса заключается в том, что некоторые из менее часто используемых элементов управления Windows Forms отсутствуют. Вы можете загрузить некоторые из них с открытым исходным кодом или бесплатные версии или приобрести пакет управления, если хотите. Некоторые элементы управления не включены, поскольку вы можете изменить шаблоны других элементов управления WPF, чтобы создать их самостоятельно. Однако это может показаться большой работой, когда вы хотите быстро разработать и внедрить простой продукт.
WPF чрезвычайно гибок. В некоторых случаях он слишком гибкий, поскольку позволяет вам переборщить с анимацией, мультимедиа, 3D-объектами и тому подобным. Если вы, как и я, не являетесь хорошим дизайнером, легко создать пользовательский интерфейс, который станет разочаровывающим, непригодным для использования или уродливым. В этих случаях может быть лучше придерживаться более простых элементов управления или нанять дизайнера для создания ваших интерфейсов.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.