Расширение разметки TemplateBinding
Устанавливает ссылку на значение свойства в шаблоне элемента управления, чтобы оно было значением свойства элемента управления-шаблона.
Использование атрибута XAML
<object property="{TemplateBinding targetProperty}" .../>
Использование атрибута XAML (для свойства Setter в шаблоне или стиле)
<Setter Property="propertyName" Value="{TemplateBinding targetProperty}" .../>
Значения XAML
propertyName |
DependencyProperty.Name для свойства устанавливается в синтаксисе Setter. |
targetProperty |
Свойство зависимостей для типа, который используется в качестве шаблона, задается с помощью DependencyProperty.Name. или «Краткое» имя свойства, которое определяется типом, отличным от целевого шаблонного типа. Это в действительности PropertyPath. См. Синтаксис PropertyPath XAML. |
Заметки
TemplateBinding является оптимизированной формой Binding для скриптов шаблона, аналогичных Binding, созданной с помощью {Binding RelativeSource={RelativeSource TemplatedParent}}.
RelativeSource является другим расширением разметки, которое иногда используется в сочетании или вместо TemplateBinding для выполнения относительной привязки свойства в шаблоне.
Шаблоны элементов управления в данном разделе не рассматриваются. Дополнительные сведения см. в разделе Стили и шаблоны элемента Control.
Синтаксис атрибута является наиболее распространенным синтаксисом, используемым с этим расширением разметки. маркер строки, указанный после идентификатора строки TemplateBinding, получает значение Property базового класса расширения TemplateBindingExtension.
Синтаксис элемента объекта возможен, но он не рассматривается из-за отсутствия практического применения. TemplateBinding используется для заполнения значений в установщиках с помощью вычисленных выражений. Использование синтаксиса элемента объекта для TemplateBinding для заполнения синтаксиса элемента свойства <Setter.Property> является излишним.
Излишним может оказаться использование TemplateBinding в атрибуте, в котором свойство Property определено как пара «свойство = значение».
<object property="{TemplateBinding Property=targetProperty}" .../>
Подробное определение зачастую удобно использовать для расширений, которые имеют несколько устанавливаемых свойств, а также в том случае, если некоторые свойства являются необязательными. Так как TemplateBinding имеет только одно устанавливаемое свойство, которое является обязательным, это использование не является типичным.
В реализации процессора XAML WPF обработка данного расширения разметки определяется классом TemplateBindingExtension.
TemplateBinding является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется не только простая настройка преобразователей типов на работу с определенными типами или свойствами. Все расширения разметки в XAML используют символы { и } в синтаксисе их атрибутов, который является соглашением, по которому процессор XAML распознает, что расширение разметки должно обработать атрибут. Дополнительные сведения см. в разделе Расширения разметки и XAML WPF.
См. также
Ссылки
Расширение разметки RelativeSource
Основные понятия
Стилизация и использование шаблонов