No pude entender BorderThickness="{TemplateBinding BorderThickness}
. Aquí el 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>
También explique otros tipos de encuadernación.
wpf
mvvm-light
prjndhi
fuente
fuente
Respuestas:
TemplateBinding se utiliza para vincular las propiedades del elemento dentro de la definición de la plantilla. En su ejemplo, podría haber escrito
lo que significa unir la propiedad de relleno del borde a la propiedad de relleno de ... ¿qué? Le gustaría decir "propiedad de relleno del control para el que se utiliza esta plantilla". No puede darle un nombre porque no conoce el x: Nombre del control en este momento (incluso si lo supiera, no funcionaría porque está en un ámbito de nombres diferente). Sin embargo, puede hacer esto definiendo una fuente relativa
o use TemplateBinding que es un atajo (*) para arriba
(*) Además de ser menos detallado en estos escenarios de plantillas, TemplateBinding tiene un par de diferencias en comparación con un enlace normal:
fuente
Una imagen vale mas que mil palabras. En este caso es un video de 7 minutos: https://www.youtube.com/watch?v=z-0TZR-7xLI
EDITAR: Ejemplo:
Button
tiene un valor predeterminadoControlTemplate
propiedad yHeight
la propiedadControlTemplate
propiedad de aButton
escribiendo la suya propia (por ejemplo, desea crear unEllipse
botón -looking en lugar deRectangle
-looking)Ellipse
nuevoControlTemplate
, deseaEllipse
que sea del mismo tamaño que laHeight
propiedad del botón originalTemplateBinding
con el fin de referenciaButton
que estáHeight
sin nombrarlofuente
Eren Ersönmenz ya lo explicó bastante bien, pero me gustaría darle otra perspectiva para entender mejor el concepto.
En WPF, cada control está más o menos separado de su presentación. Siempre puede cambiar la plantilla de controles y hacer que se vea completamente diferente. Un botón funciona como se esperaba con un
ControlTemplate
solo que consta de,Rectangle
por ejemplo. Ahora bien, a veces es necesarioControlTemplate
que realmente utilice las propiedades de la parte lógica de un control. Y para esoTemplateBinding
es que solo le dice alControlTemplate
"Use esta propiedad del control que le estamos dando a la presentación visual". Un buen ejemplo es laBackground
propiedad en cada control, no tiene significado por sí misma, obtiene su significadoTemplateBinding
al control secundario en elControlTemplate
.El enlace por sí solo se describe muy bien en el MSDN . Esta es una hoja de trucos muy bonita que de hecho cuelga de mi pared junto a mí. Ofrece una buena descripción de todos los enlaces disponibles.
fuente
Desde TemplateBinding Markup Extension ,
TemplateBinding
vincula el valor de una propiedad en una plantilla de control al valor de alguna otra propiedad expuesta en el control con plantilla. En otras palabras, es para vincular valores en una plantilla.El enlace conecta una propiedad de los destinos de enlace y las fuentes de datos.
fuente