Главная » Silverlight » Шаблоныи пользовательские элементы управления

0

В предыдущей главе вы узнали об использовании стилей и поведений для повтор­ного применения кода и параметров пользовательского интерфейса. Для это­го же предназначены еще два инструмента Silverlight — шаблоны и пользовательские элементы управления, о которых вы узнаете в данной главе.

Шаблоны позволяют настраивать внешний вид любого элемента управления. Довольно часто изменить внешний вид элемента, настраивая только его свойства, не­возможно, а применив к элементу другой шаблон, это можно сделать почти всегда. Создавать шаблоны пользовательских элементов сложнее, чем настраивать их свой­ства, однако это проще и легче, чем создавать элементы заново (что вынуждают делать многие платформы программирования).

Несмотря на все преимущества стилей и шаблонов, вам иногда все же придется соз­давать собственные пользовательские элементы управления. Обычно это вынужденная работа, обусловленная тем, что базовые элементы управления Silverlight не предостав­ляют нужной функциональности. В данной главе вы узнаете о создании совершенных элементов управления на основе модели шаблонов. Благодаря ей вы (и другие разра­ботчики) сможете модифицировать все параметры внешнего вида элемента, не затра­гивая его поведение.

Новые средства. По сравнению с Silverlight 2, инструменты создания шаблонов и пользовательских элементов управления в Silverlight 3 не изменились. В интерфейс добавлены лишь поведения, описанные в предыдущей главе.

Основы использования шаблонов

Из предыдущей главы вы узнали о стилях — инструменте, позволяющем изменять внешний вид элементов управления. Однако с помощью стилей можно устанавливать только свойства, определенные в классе элемента. Например, кнопка обладает многими визуальными параметрами, которые нельзя устанавливать с помощью стиля, посколь­ку они не представлены свойствами (в частности, с помощью стилей нельзя установить способ затенения фона кнопки при щелчке на ней).

Для преодоления ограничений, присущих стилям, предназначен другой, более мощ­ный, инструмент настройки — шаблоны. Впрочем, им присущи другие ограничения. Стили можно применять к любым элементам Silverlight, а шаблоны — только к эле­ментам управления Silverlight, т.е. к элементам, наследующим класс Control простран­ства имен System.Windows .Controls. Каждый элемент управления обладает свойством Template, с помощью которого к нему применяется пользовательский шаблон, перео­пределяющий его визуальные параметры.

Например, заменив шаблон, используемый в объекте Button, можно создавать экзо­тические кнопки, создание которых с помощью стилей невозможно. Например, можно создавать кнопки с фигурными границами и с визуальными эффектами, отображаемыми при наведении указателя (мерцание, увеличение, искажение формы и т.д.). Для этого при создании пользовательского шаблона нужно применить средства настройки элементов управления, описанные в главах 8 и 9, а также средства анимации, описанные в главе 10.

В следующих разделах вы узнаете о шаблонах, используемых в базовых элементах управления, и о создании пользовательских шаблонов.

Создание шаблона

В каждый элемент управления встроена процедура, определяющая, как он должен быть выведен на экран. Эта процедура называется встроенным шаблоном элемента управления. Она определяется с помощью блока разметки XAML и применяется к эле­менту управления. Пользовательский шаблон тоже определяется с помощью разметки XAML, однако, в отличие от встроенного шаблона, применяется к элементу управления посредством свойства Template.

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

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

•       Border (Рамка). Этот элемент выполняет двойную функцию: он содержит один вложенный элемент (например, TextBlock, создающий надпись кнопки) и рису­ет вокруг него рамку.

•       Grid (Решетка). Кнопку можно создать, разместив несколько элементов в одном месте. Разместите элемент фигуры (например, Rectangle или Path) и текстовый блок в одной ячейке. Текстовый блок должен быть определен в разметке после фи­гуры, чтобы он был выведен поверх ее фона. Одно из преимуществ контейнера Grid состоит в том, что он автоматически устанавливает размеры. Благодаря это­му элемент управления имеет размеры, необходимые для вывода содержимого.

•       Canvas (Холст). В контейнере Canvas элементы точно размещаются на основе за­данных координат. Создание контейнера Canvas — более трудоемкая работа, чем создание контейнера Grid, потому что нужно вручную задавать координаты, од­нако он позволяет точно позиционировать фигуры относительно друг друга, что необходимо для создания рисунка кнопки.

В приведенной ниже разметке класс Border используется для создания оранжевого обрамления, красного фона и белого текста кнопки.

<Button C0ntent="rkMib30BaTenbCKMii шаблон кнопки"> <Button.Template> <ControlTemplate TargetType="Button" > <Border BorderBrush="Orange" BorderThickness="3"

CornerRadius="10" Background="Red"> <TextBlock Foreground="White" Text="Кнопка на основе шаблона"> </TextBlock> </Border> </ControlTemplate> </Button.Template> </Button>

Результат показан на рис. 13.1.

Рис. 13.1. Кнопка на основе пользовательского шаблона

Данный шаблон довольно простой, он не предоставляет многих средств, необхо­димых для кнопки. Например, при щелчке на кнопке ее внешний вид не изменяется. Кроме того, кнопка игнорирует каждое свойство, установленное для нее, в том числе важное свойство Content (вместо него кнопка выводит жестко закодированный текст). В следующих разделах рассматривается улучшение шаблона кнопки.

Примечание. Мы начали рассматривать создание пользовательского шаблона кнопки, ничего не упомянув о встро­енном шаблоне. Это объясняется тем, что встроенные шаблоны чрезвычайно перегружены техническими подробностями. Фактически встроенный шаблон самой простой кнопки занимает четыре печатные страницы кода. В то же время, поняв, как работают шаблоны, вы сможете самостоятельно разобраться со всеми подробностями встроенных шаблонов.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

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