Главная » WPF » Применение стилей не во зло

0

Включение стилей, да и вообще настраиваемость всего и вся в WPF,  наверное, можно считать одним из самых существенных изменений по сравнению со всеми предшествующими презентационными технологиями. При работе над WPF мы часто сравнивали то, что делали,  с оригинальной системой  Macintosh, которая предложила обычному  пользователю богатый  набор шрифтов  и типографичес ких средств. Человечество в течение целых десяти лет расплачивалось за это до кументами,  выглядящими как нотная партитура,  пока не научилось  пользовать ся шрифтами ответственно, чтобы улучшить  способы передачи информации.

Самоограничение необходимо  и при работе со стилями.  Есть  три основных причины  для создания  специализированного стиля: (1) предоставить  общий на бор свойств  нескольким объектам; (2)  выполнить все настройки в одном месте; (3) сделать приложение не похожим на другие.

Рис. 8.6. Использование базового стиля для распространения общих свойств на несколько дочерних стилей

Применять стили ради решения  первых двух задач вполне оправдано, и я го рячо  рекомендую  такой  подход.  Если  придерживаться разумных  рекмендаций (ведь следуем же мы рекомендациям при написании кода), то стили могут замет но повысить  производительность труда. А переносить  ли определения стилей  в отдельный  файл или нет – дело вкуса.

Что же касается использования стилей для придания приложению уникаль

ного внешнего вида, то я хочу сделать три предостережения:

Не пытайтесь свести определение внешнего вида лишь к созданию одного сти

ля. Это должно быть сквозной темой всего приложения.

Включайте в тему достаточное число стандартных элементов управления, что

бы приложение выглядело единообразным. В единообразии сила.

Сформулируйте для себя главную идею.

Создавайте  темы, а не стили

Специализированные темы имеют тенденцию очень быстро разрастаться. Определения нескольких  градиентов  и фигур для элементов  управления могут

занимать  несколько  сотен строк в разметке.  Кроме того, мы начинаем  вводить зависимости между шаблонами  и стилями,  а также между ресурсами  и шабло нами (обратили внимание  на круговую зависимость?). Зачастую  для определе ния развитой  темы требуется  программировать конвертеры  значений  или нес тандартное  поведение  элемента.  Следовательно, в общем случае лучше предс тавлять  себе тему как нечто целостное, а не просто набор стилей при корневом окне приложения.

Первый  мой  конкретный совет  – вынести  определение  темы  в отдельный файл  и воспользоваться функцией объединения словарей  для привязки темы к приложению.  А еще лучше поместить  определение  темы в отдельную  сборку  и загружать стиль с помощью перекрестных  ссылок на сборки (/<assemblyName>;component/ <resourceName>):

<Application.Resources>

<ResourceDictionary>

<ResourceDictionary.MergedDictionaries>

<ResourceDictionary

Source=’/StyleLibrary;Component/theme.xaml’ />

</ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

</Application.Resources>

Такой подход позволяет  четко отделить  тему от приложения, а это упрощает передачу ее дизайнеру  и вынуждает  нас думать о теме как об отдельном  компо ненте.

В единообразии сила

Продумывая, как должно  выглядеть  приложение, важно помнить  о единооб разии  всех используемых элементов  управления. Одна из задач WPF – обеспе чить настраиваемость всех элементов,  чтобы не получались  «приложения фран кенштейны». Такое явление часто можно наблюдать при использовании прежних библиотек  для создания  форм  (они  выглядят так, будто сшиты  из разных  кус ков). Разумеется, такая могучая функциональность предъявляет повышенные требования  к разработчику тем, зато создает благоприятное впечатление у поль зователя.

Добиться  единообразия будет проще, если заранее выбрать название темы («металлик», «плоская» и т.д.). Взгляните на «плохой» набор элементов управле ния, показанный на рис. 8.7 слева. Здесь гарнитуры  и размеры шрифтов  различ ны, цвета тоже различны,  даже углы наклона  текста отличаются.  Верхняя  кноп ка, наверное, неплохо  выглядела бы в игре или в причудливом интерфейсе  для анкетирования, а непритязательные на вид переключатели подошли бы Web приложению.  Не претендуя на лавры графического  дизайнера, я все же осмелюсь утверждать,  что «хорошие»  элементы  справа  по крайней  мере единообразны. У них единый стиль, выбор шрифтов  и т.д.

Помимо единообразия, набор элементов управления должен быть полон. Обычно, приступая к созданию темы, человек выбирает несколько общеупотребительных прос тых элементов, например, различные кнопки. Но затем он начинает конструировать ре альное приложение, в котором встречаются  самые разнообразные элементы, требую щие более сложных  стилей, и в результате  все заканчивается тем же «Франкештей ном», только немножко иного вида (рис. 8.8). Одна из самых распространенных оши бок такого рода заключается в том, что забывают стилизовать полосы прокрутки.  На рис. 8.8 кнопки выглядят «круто», а ползунок и вкладки вообще никак не настроены.

После создания стиля, отличающегося единообразным внешним видом и ши

риной элементов управления, нам понадобится нечто, связывающее тему воедино.

Рис. 8.8. Единообразие означает, что тема охватывает все элементы управления или, по крайней мере, все используемые в приложении

Сформулируйте главную идею

Темы  позволяют  придать  приложению уникальный внешний  вид. Создание специализированной темы – трудоемкое занятие как в плане дизайна, так и в пла не реализации. Главное – чтобы тема вызывало  у пользователя определенные ас социации. Быть может, идеей темы является продвижение бренда компании,  или

«экстремальная» стилизация, заявляющая о необычности  приложения. Важно, чтобы идею темы можно было выразить  словами, лучше всего одним предложе нием. Например, команда WPF частенько возвращается к примеру Xbox, мечтая создать  соответствующую тему. У приставки Xbox очень характерный облик  в плане аппаратуры,  программного обеспечения  и даже присутствия в Web. Тема по образцу Xbox несла бы в себе очевидное послание; она отличала  бы приложе ния для Xbox от прочих приложений для Windows.

Вообще говоря, если программа представляет собой обычную утилиту  или стандартное  деловое приложение, то маловероятно, что специальная тема доба вит ему ценности. Но даже в таких случаях было бы интересно  воспользоваться темами, чтобы привести приложение в соответствие  с рекомендациями по разра ботке удобных для пользователей программ.

Чего мы достигли?

В этой главе мы рассмотрели работу стилей и тем в WPF. Мы видели, как оп ределяются  и используются стили и как они собираются  в темы. Мы познакоми лись с рекомендациями по применению  стилей. И напоследок  мы узнали,  как с помощью ресурсов и шаблонов стили сопрягаются с системой работы с данными в WPF. Стили объединяют  между собой все части WPF.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии