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