Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Связывает значение свойства в шаблоне элемента управления со значением другого предоставленного свойства в шаблонном элементе управления. TemplateBinding можно использовать только в определении ControlTemplate в XAML.
Использование атрибута XAML
<object propertyName="{TemplateBinding sourceProperty}" .../>
Использование атрибута XAML (для свойства 'Setter' в шаблоне или стиле)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>
Значения XAML
Срок | Описание |
---|---|
propertyName | Имя свойства, заданного в синтаксисе метода задания. Это должно быть свойство зависимости. |
исходноеСвойство | Имя другого свойства зависимостей, существующего в шаблонном типе. |
Замечания
Использование TemplateBinding является фундаментальной частью определения шаблона элемента управления, будь то в случае, если вы являетесь автором пользовательского элемента управления или заменяете шаблон элемента управления для существующих элементов управления. Дополнительную информацию можно найти в кратком руководстве: шаблоны управления.
Это весьма распространено, когда propertyName и targetProperty используют одно и то же имя свойства. В этом случае элемент управления может определить свойство самостоятельно и перенаправить свойство в существующее и интуитивно именованное свойство одного из его компонентов. Например, элемент управления, который включает TextBlock в его состав, который используется для отображения собственного свойства Text элемента управления, может включать этот XAML в состав шаблона элемента управления: <TextBlock Text="{TemplateBinding Text}" .... />
Типы, используемые в качестве значения исходного свойства и целевого свойства, должны совпадать. При использовании TemplateBindingнет возможности ввести преобразователь. Сбой сопоставления значений приводит к ошибке при анализе XAML. Если вам нужен преобразователь, можно использовать подробный синтаксис для привязки шаблона, например: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}
Попытка использовать TemplateBinding за пределами определения ControlTemplate в XAML приведет к ошибке синтаксического анализа.
Можно использовать TemplateBinding в случаях, когда шаблонное родительское значение также откладывается в качестве другой привязки. Оценка для TemplateBinding может ожидать, пока все необходимые привязки выполнения получат значения.
A TemplateBinding всегда является односторонней привязкой. Оба свойства должны быть свойствами зависимостей.
TemplateBinding — это расширение разметки. Расширения разметки обычно реализуются, если существует требование для исключения значений атрибутов, отличных от литеральных значений или имен обработчиков, и это требование является более общим, чем использование преобразователей типов для конкретных типов или свойств. Все расширения разметки в XAML используют символы "{" и "}" в синтаксисе атрибутов, что является соглашением, с помощью которого обработчик XAML распознает, что расширение разметки должно обрабатывать атрибут.
Примечание В реализации процессора XAML среды выполнения Windows не существует резервного представления класса для TemplateBinding. TemplateBinding предназначен исключительно для использования в разметке XAML. Существует не простой способ воспроизвести поведение в коде.
x:Bind в ControlTemplate
Замечание
Для использования x:Bind в ControlTemplate требуется Windows 10 версии 1809 (пакет SDK17763) или более поздней версии. Для получения дополнительной информации о целевых версиях см. раздел "Адаптивный код версии".
Начиная с Windows 10 версии 1809, вы можете использовать расширение разметки x:Bind везде, где вы используете TemplateBinding в ControlTemplate.
Свойство TargetType является обязательным (не необязательным) для ControlTemplate при использовании x:Bind.
С поддержкой
В этом примере свойство TextBlock.Text оценивается как Button.Content.ToString. TargetType в ControlTemplate выступает в качестве источника данных и выполняет тот же результат, что и templateBinding для родительского элемента.
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
</Grid>
</ControlTemplate>
Связанные темы
- Краткое руководство по . Шаблоны элементов управления
- Подробная привязка данных
- ControlTemplate
- Обзор XAML
- Общие сведения о свойствах зависимостей