Eu não conseguia entender BorderThickness="{TemplateBinding BorderThickness}
. Aqui está o código:
<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>
Explique também outros tipos de vinculação.
wpf
mvvm-light
prjndhi
fonte
fonte
Respostas:
TemplateBinding é usado para vincular as propriedades do elemento na definição do modelo. Em seu exemplo, você poderia ter escrito
que significa vincular a propriedade de preenchimento da fronteira à propriedade de preenchimento de ... o quê? Você gostaria de dizer, "propriedade de preenchimento do controle para o qual este modelo está sendo usado." Você não pode dar um nome a ele porque você não sabe o x: Nome do controle neste momento (mesmo se soubesse, não funcionaria porque está em um namescope diferente). No entanto, você pode fazer isso definindo uma fonte relativa
ou use TemplateBinding que é um atalho (*) para o acima
(*) Além de ser menos prolixo nesses cenários de modelagem, TemplateBinding tem algumas diferenças em comparação com uma vinculação regular:
fonte
Uma imagem vale mais que mil palavras. Neste caso, é um vídeo de 7 minutos: https://www.youtube.com/watch?v=z-0TZR-7xLI
EDITAR: Exemplo:
Button
tem umaControlTemplate
propriedade eHeight
propriedade padrãoControlTemplate
propriedade de aButton
escrevendo a sua própria (por exemplo, você deseja fazer umEllipse
botão -looking em vez deRectangle
-looking)Ellipse
em seu novoControlTemplate
, você desejaEllipse
que tenha o mesmo tamanho daHeight
propriedade original do ButtonTemplateBinding
, a fim de referênciaButton
éHeight
sem nomeá-lofonte
Eren Ersönmenz já explicou muito bem, mas gostaria de dar uma outra perspectiva para entender melhor o conceito.
No WPF, cada controle é mais ou menos separado de sua apresentação. Você sempre pode alterar o modelo de controles e torná-los completamente diferentes. Um botão funciona conforme o esperado com um
ControlTemplate
consistindo apenas em,Rectangle
por exemplo. Agora, às vezes é necessário que oControlTemplate
use realmente as propriedades da parte lógica de um controle. E para issoTemplateBinding
ele apenas informa oControlTemplate
"Use esta propriedade do controle que estamos dando para a apresentação visual". Um bom exemplo é aBackground
propriedade em cada controle, ela não tem nenhum significado por si só, ela obtém seu significado por meioTemplateBinding
dela para o controle filho noControlTemplate
.A vinculação por si só é muito boa descrita no MSDN . Esta é uma folha de cola muito bonita que na verdade está pendurada na minha parede ao meu lado. Ele oferece uma boa visão geral de todas as diferentes ligações disponíveis.
fonte
Em TemplateBinding Markup Extension ,
TemplateBinding
vincula o valor de uma propriedade em um modelo de controle ao valor de alguma outra propriedade exposta no controle modelo. Em outras palavras, é para valores de ligação em um modelo.Binding conecta uma propriedade de destinos de ligação e fontes de dados.
fonte