Расширение разметки 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.
См. также
- Style
- ControlTemplate
- Стилизация и шаблоны
- XAML в WPF
- расширения разметки и XAML WPF
- Расширение разметки RelativeSource
- Расширение привязки разметки
.NET Desktop feedback