Текстовая область слева вверху позволяет вводить полностью заданное имя элемента управления WPF, расположенного в сборке
PresentationFramework.dll
. После того как библиотека загружена, экземпляр элемента управления динамически создается и отображается в большом квадрате слева внизу. Наконец, в текстовой области справа будет отображаться стандартный шаблон элемента управления. Добавьте в класс C# новую переменную-член типа
Control
:
private Control _ctrlToExamine=null;
Ниже показан остальной код, который требует импортирования пространств имен
System.Reflection.System.Xml
и
System.Windows.Markup
:
private void btnTemplate_Click(
object sender, RoutedEventArgs e)
{
_dataToShow="";
ShowTemplate;
txtDisplayArea.Text=_dataToShow;
}
private void ShowTemplate
{
// Удалить элемент, который в текущий момент находится
Большая часть работы связана с отображением скомпилированного ресурса BAML на строку разметки XAML. На рис. 27.12 демонстрируется финальное приложение в действии на примере вывода стандартного шаблона для элемента управления
System.Windows.Controls.DatePicker
. Здесь отображается календарь, который доступен по щелчку на кнопке в правой части элемента управления.
К настоящему моменту вы должны лучше понимать взаимосвязь между логическими деревьями, визуальными деревьями и стандартными шаблонами элементов управления. Остаток главы будет посвящен построению специальных шаблонов и пользовательских элементов управления.
Построение шаблона элемента управления с помощью инфраструктуры триггеров
Специальный шаблон для элемента управления можно создавать с помощью только кода С#. Такой подход предусматривает добавление данных к объекту
ControlTemplate
и затем присваивание его свойству
Template
элемента управления. Однако большую часть времени внешний вид и поведение
ControlTemplate
будут определяться с использованием разметки XAML и фрагментов кода (мелких или крупных) для управления поведением во время выполнения.
В оставшемся материале главы вы узнаете, как строить специальные шаблоны с применением Visual Studio. Попутно вы ознакомитесь с инфраструктурой триггеров WPF и научитесь использовать анимацию для встраивания визуальных подсказок конечным пользователям. Применение при построении сложных шаблонов только IDE-среды Visual Studio может быть связано с довольно большим объемом клавиатурного набора и трудной работы. Конечно, шаблоны производственного уровня получат преимущество от использования продукта Blend, устанавливаемого вместе с Visual Studio. Тем не менее, поскольку текущее издание книги не включает описание Blend, время засучить рукава и приступить к написанию некоторой разметки.
Для начала создайте новый проект приложения WPF по имени
ButtonTemplate
. Основной интерес в данном проекте представляют механизмы создания и применения шаблонов, так что замените элемент
просто отображается окно сообщения (посредством вызова
MessageBox.Show
) с подтверждением щелчка на элементе управления. При построении специальных шаблонов помните, что поведение элемента управления неизменно, но его внешний вид может варьироваться.