Главная » WPF » Привязка шаблона WPF

0

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

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

<ControlTemplate TargetType=’{x:Type Button}’>

<Border CornerRadius=’4’

BorderThickness=’{TemplateBinding Property=BorderThickness}’ BorderBrush=’{TemplateBinding Property=BorderBrush}’ Background=’{TemplateBinding Property=Background}’

<ContentPresenter />

</Border>

</ControlTemplate>

В этой разметке  свойства  BorderThickness, BorderBrush и Background рамки Border привязываются к одноименным свойствам элемента Button, с которым ас# социирован  шаблон. Теперь для создания кнопки, показанной  на рис. 3.10, доста# точно просто задать свойства элемента Button:

<Button

BorderThickness = ‘4’ BorderBrush = ‘Orange’ Background = ‘Yellow’

<Button.Template>…</Button.Template>

</Button>

Рис. 3.10. Кнопка с шаблоном, в котором используется привязка

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

<ControlTemplate TargetType=’{x:Type Button}’>

<Rectangle Fill=’{TemplateBinding Property=Background}’ />

</ControlTemplate>

В обоих примерах  достигается  одна и та же цель: дать разработчику возмож# ность  изменять   внешний   вид  элемента   управления  с  помощью  одних  лишь свойств. Другой важной частью идеологии WPF является инкрементная настрой# ка. Мы начинаем настройку внешнего вида приложения с базовых элементов и их свойств (к примеру, с задания  свойства  Background для элемента  Button). Затем мы переходим к составлению одних элементов из других (помещаем  изображение внутрь кнопки).  Далее мы можем создать шаблон для элемента управления, а, ес# ли без этого не обойтись, то даже написать специализированный элемент.

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

По теме:

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