Я не мог понять BorderThickness="{TemplateBinding BorderThickness}
. Вот код:
<ControlTemplate TargetType="{x:Type wpftoolkit:DataGridCell}">
<Border Padding="{TemplateBinding Padding}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
Также объясните, пожалуйста, другие типы привязки.
wpf
mvvm-light
prjndhi
источник
источник
Ответы:
TemplateBinding используется для привязки к свойствам элемента в определении шаблона. В вашем примере вы могли бы написать
означает привязать свойство padding границы к свойству padding ... что? Вы хотели бы сказать: «свойство padding элемента управления, для которого используется этот шаблон». Вы не можете дать ему имя, потому что в настоящее время вы не знаете x: Name элемента управления (даже если бы вы это сделали, это не сработало бы, потому что оно находится в другой области имен). Однако вы можете сделать это, указав относительный источник
или используйте TemplateBinding, который является ярлыком (*) для вышеуказанного
(*) Помимо того, что TemplateBinding менее подробен в этих сценариях создания шаблонов, он имеет несколько отличий от обычного связывания:
источник
Одна картинка стоит тысячи слов. В данном случае это 7-минутное видео: https://www.youtube.com/watch?v=z-0TZR-7xLI
РЕДАКТИРОВАТЬ: Пример:
Button
имеетControlTemplate
свойство по умолчанию иHeight
свойствоControlTemplate
свойство aButton
, написав свое собственное (например, вы хотите сделатьEllipse
кнопку -looking вместоRectangle
-looking)Ellipse
в своем новомControlTemplate
, вы хотите,Ellipse
чтобы он был того же размера, что и исходноеHeight
свойство ButtonTemplateBinding
для ссылкиButton
,Height
не называя егоисточник
Эрен Эрсонменц уже достаточно хорошо объяснил это, но я хотел бы дать ему другую перспективу, чтобы лучше понять концепцию.
В WPF каждый элемент управления более или менее отделен от своего представления. Вы всегда можете изменить шаблон элементов управления и сделать его совершенно другим. Кнопка работает должным образом, например, если она
ControlTemplate
состоит только изRectangle
. Теперь иногда необходимо,ControlTemplate
чтобы фактически использовались свойства логической части элемента управления. И это тоTemplateBinding
, для чего он просто сообщаетControlTemplate
«Используйте это свойство элемента управления, который мы даем визуальному представлению». Хорошим примером являетсяBackground
свойство каждого элемента управления, само по себе оно не имеет значения, оно передаетсяTemplateBinding
дочернему элементу управления вControlTemplate
.Сама по себе привязка очень хорошо описана в MSDN . Это очень хорошая шпаргалка, которая на самом деле висит у меня на стене рядом со мной. Он дает хороший обзор всех доступных привязок.
источник
От TemplateBinding расширения разметки ,
TemplateBinding
связывает значение свойства в шаблоне элемента управления к значению какой - либо другой выставленным собственности на шаблонном управлении. Другими словами, это для привязки значений в шаблоне.Связывание связывает свойство целей привязки и источников данных.
источник