ControlTemplate Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет дерево элементов, которое используется в качестве шаблона элемента управления для элемента управления.
public ref class ControlTemplate sealed : FrameworkTemplate
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ControlTemplate final : FrameworkTemplate
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ControlTemplate : FrameworkTemplate
Public NotInheritable Class ControlTemplate
Inherits FrameworkTemplate
<ControlTemplate ...>
templateRootElement
</ControlTemplate>
- Наследование
- Атрибуты
Примеры
В следующем примере создается простой элемент ControlTemplate для кнопки. Шаблон элемента управления содержит одну сетку и указывает следующее поведение:
- Когда пользователь помещает указатель мыши на кнопку, сетка изменяется с зеленого на красный более одной половины секунды.
- Когда пользователь перемещает мышь от кнопки, сетка сразу же меняется на зеленую.
<ControlTemplate TargetType="Button">
<Grid >
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<!--Take one half second to transition to the PointerOver state.-->
<VisualTransition To="PointerOver"
GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<!--Change the SolidColorBrush, ButtonBrush, to red when the
Pointer is over the button.-->
<VisualState x:Name="PointerOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="ButtonBrush"
Storyboard.TargetProperty="Color" To="Red" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
</Grid.Background>
</Grid>
</ControlTemplate>
Полный шаблон для каждого элемента управления XAML можно увидеть в файле generic.xaml . Этот файл находится в папке (Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic.
Комментарии
Дополнительные сведения и примеры см. в шаблонах элементов управления XAML.
ControlTemplate используется в качестве значения свойства Control.Template , которое определяет визуальные элементы элемента управления путем применения шаблона. Вы почти всегда определяете ControlTemplate как ресурс XAML, используя неявный ключ TargetType , который совпадает со стилем , который задает Control.Template с параметром setter. Редко при назначении значения для Control.Template непосредственно в экземпляре элемента управления.
Существует только два свойства, которые используются при определении ControlTemplate: TargetType и неявного содержимого XAML. ControlTemplate наследует неявное поведение содержимого XAML от родительского элемента FrameworkTemplate . В основном элемент, содержащийся в ControlTemplate, как определено в XAML, назначает корневой элемент для дальнейшей структуры элементов XAML, определяющих шаблон. Это задает свойство Template, которое впоследствии не может быть проверено кодом и имеет значение только для того, как средство синтаксического анализа XAML назначает содержимое для элементов управления на основе применения этого шаблона.
Чтобы его содержимое было задано из ControlTemplate, элемент управления должен быть истинным подклассом Control , чтобы он был свойством Control.Template . Существуют и другие случаи, когда шаблоны применяют содержимое, но это обычно включает один из других производных классов шаблонов FrameworkTemplate (DataTemplate или ItemsPanelTemplate).
Шаблоны элементов управления предоставляют визуальные элементы и части, составляющие экземпляр элемента управления, как он отображается в пользовательском интерфейсе приложения. Во время выполнения шаблон уже применен, и поэтому все компоненты, созданные из шаблона, теперь действительно являются частями элемента управления и могут быть доступны таким методам, как изучение областей имен XAML из содержимого элемента управления или использование класса VisualTreeHelper . Такие события, как входные события, иногда предоставляют части элемента управления, полученного из примененного шаблона элемента управления.
Существует способ доступа к содержимому, определенному шаблоном, либо до или после применения шаблона к конкретному экземпляру элемента управления; см. раздел OnApplyTemplate или GetTemplateChild.
Фактический момент времени применения ControlTemplate к экземпляру элемента управления, так как это вызывает защищенный виртуальный метод OnApplyTemplate . До тех пор, пока элемент управления не запечатан, вы можете подклассить элемент управления, чтобы у вас была возможность переопределить OnApplyTemplate. Это переопределение можно записать для выполнения действий, которые не могут быть возможны до применения шаблона. Например, можно проводить обработчики событий для управления частями или задать свойства элемента управления для ссылки на части объектов, созданные из шаблона, но не начинались со значения расширения разметки {TemplateBinding} .
Конструкторы
| Имя | Описание |
|---|---|
| ControlTemplate() |
Инициализирует новый экземпляр класса ControlTemplate . |
Свойства
| Имя | Описание |
|---|---|
| Dispatcher |
Всегда возвращается |
| DispatcherQueue |
Возвращает, |
| TargetType |
Возвращает или задает тип, к которому применяется ControlTemplate . |
Методы
| Имя | Описание |
|---|---|
| ClearValue(DependencyProperty) |
Очищает локальное значение свойства зависимостей. (Унаследовано от DependencyObject) |
| GetAnimationBaseValue(DependencyProperty) |
Возвращает любое базовое значение, установленное для свойства зависимостей, которое будет применяться в случаях, когда анимация не активна. (Унаследовано от DependencyObject) |
| GetValue(DependencyProperty) |
Возвращает текущее эффективное значение свойства зависимостей из DependencyObject. (Унаследовано от DependencyObject) |
| ReadLocalValue(DependencyProperty) |
Возвращает локальное значение свойства зависимостей, если задано локальное значение. (Унаследовано от DependencyObject) |
| RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
Регистрирует функцию уведомлений для прослушивания изменений в определенном экземпляре DependencyProperty в этом экземпляре DependencyObject . (Унаследовано от DependencyObject) |
| SetValue(DependencyProperty, Object) |
Задает локальное значение свойства зависимостей в DependencyObject. (Унаследовано от DependencyObject) |
| UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Отменяет уведомление об изменении, которое ранее было зарегистрировано путем вызова RegisterPropertyChangedCallback. (Унаследовано от DependencyObject) |