Поделиться через


Расширение разметки TemplateBinding

Связывает значение свойства в шаблоне элемента управления со значением другого свойства этого элемента управления.

Использование атрибута XAML

<object property="{TemplateBinding sourceProperty}" ... />

Использование атрибутов XAML (для свойства Setter в шаблоне или стиле)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />  

Значения XAML

Ценность Описание
propertyName DependencyProperty.Name свойства, заданного в синтаксисе задания.
sourceProperty Другое свойство зависимостей, существующее в шаблоне типа, указанное DependencyProperty.Name.

-или-

Имя свойства "dotted-down", определенное по-другому типу, чем шаблонируемый целевой тип. Вообще-то это PropertyPath. См.синтаксиса PropertyPath XAML .

Замечания

TemplateBinding — это оптимизированная форма Binding для сценариев шаблонов, аналогичная Binding построенной с {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}. TemplateBinding всегда является односторонней привязкой, даже если свойства, которые используются, по умолчанию предназначены для двусторонней привязки. Оба свойства должны быть свойствами зависимостей. Чтобы добиться двусторонней привязки к шаблонному родителю, используйте следующую инструкцию привязки вместо {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.

RelativeSource является другим расширением разметки, которое иногда используется в сочетании с или вместо TemplateBinding для выполнения относительной привязки свойств в шаблоне.

Описание шаблонов элементов управления как концепции не рассматривается здесь; Дополнительные сведения см. в разделе Стили и шаблоны элементов управления.

Синтаксис атрибутов — это наиболее распространенный синтаксис, используемый с этим расширением разметки. Строковый маркер, предоставленный после назначения строки идентификатора TemplateBinding в качестве значения Property базового класса расширения TemplateBindingExtension.

Синтаксис элемента объекта возможен, но он не отображается, так как он не имеет реалистичного приложения. TemplateBinding используется для заполнения значений в сеттерах, включая использование вычисляемых выражений и синтаксиса элемента объекта для TemplateBinding. Однако использование синтаксиса элемента свойства <Setter.Property> слишком многословно и необязательно.

TemplateBinding также можно использовать в атрибуте с подробным описанием, указывающем свойство Property в виде пары свойство=значение.

<object property="{TemplateBinding Property=sourceProperty}" ... />

Подробное использование часто полезно для расширений, имеющих более одного настраиваемого свойства, или если некоторые свойства являются необязательными. Так как у TemplateBinding есть только одно настраиваемое свойство, которое является обязательным, такое детальное использование не является типичным.

В реализации обработчика XAML WPF обработка этого расширения разметки определяется классом TemplateBindingExtension.

TemplateBinding — это расширение разметки. Расширения разметки обычно реализуются, когда необходимо экранировать значения атрибутов, отличные от литеральных значений или имен обработчиков, и это требование охватывает более широкий контекст, чем просто использование преобразователей типов на определенных типах или свойствах. Все расширения разметки в XAML используют { и } символы в синтаксисе атрибутов, что является соглашением, с помощью которого обработчик XAML распознает, что расширение разметки должно обрабатывать атрибут. Дополнительные сведения см. в разделе Расширения разметки и разделеXAML WPF.

См. также