Je ne pouvais pas comprendre BorderThickness="{TemplateBinding BorderThickness}
. Voici le code:
<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>
Veuillez également expliquer les autres types de reliure.
wpf
mvvm-light
prjndhi
la source
la source
Réponses:
TemplateBinding est utilisé pour la liaison aux propriétés d'élément dans la définition de modèle. Dans votre exemple, vous auriez pu écrire
ce qui signifie lier la propriété padding de la bordure à la propriété padding de ... quoi? Vous aimeriez dire "propriété de remplissage du contrôle pour lequel ce modèle est utilisé". Vous ne pouvez pas lui donner un nom car vous ne connaissez pas le x: Nom du contrôle pour le moment (même si vous le faisiez, cela ne fonctionnerait pas car il est dans une autre portée de nom). Cependant, vous pouvez le faire en définissant une source relative
ou utilisez TemplateBinding qui est un raccourci (*) pour ci-dessus
(*) En plus d'être moins verbeux dans ces scénarios de modèles, TemplateBinding présente quelques différences par rapport à une liaison régulière:
la source
Une image vaut mieux que mille mots. Dans ce cas, il s'agit d'une vidéo de 7 minutes: https://www.youtube.com/watch?v=z-0TZR-7xLI
EDIT: Exemple:
Button
a une valeur par défaut laControlTemplate
propriété et laHeight
propriétéControlTemplate
propriété de aButton
en écrivant la vôtre (par exemple, vous voulez créer unEllipse
bouton -looking au lieu deRectangle
-looking)Ellipse
dans votre nouveauControlTemplate
, vous voulez que laEllipse
taille de laHeight
propriété Button d'origineTemplateBinding
pour référenceButton
« sHeight
sans le nommerla source
Eren Ersönmenz l'a déjà assez bien expliqué, mais je voudrais lui donner une autre perspective pour mieux comprendre le concept.
Dans WPF, chaque contrôle est plus ou moins détaché de sa présentation. Vous pouvez toujours modifier le modèle de contrôles et lui donner un aspect complètement différent. Un bouton fonctionne comme prévu avec un
ControlTemplate
seul composé d'unRectangle
par exemple. Parfois, il est parfois nécessaire que leControlTemplate
utilise réellement les propriétés de la partie logique d'un contrôle. Et c'estTemplateBinding
pour ça qu'il dit simplementControlTemplate
"Utiliser cette propriété du contrôle que nous donnons à la présentation visuelle". Un bon exemple est laBackground
propriété sur chaque contrôle, elle n'a aucune signification en elle-même, elle obtient sa signification parTemplateBinding
elle au contrôle enfant dans leControlTemplate
.La liaison en elle-même est très bien décrite dans le MSDN . C'est une très belle feuille de triche qui est en fait accrochée à mon mur juste à côté de moi. Il donne un bon aperçu de toutes les différentes fixations disponibles.
la source
À partir de TemplateBinding Markup Extension ,
TemplateBinding
lie la valeur d'une propriété dans un modèle de contrôle à la valeur d'une autre propriété exposée sur le contrôle basé sur un modèle. En d'autres termes, il s'agit de lier des valeurs dans un modèle.La liaison connecte une propriété de liaison de cibles et de sources de données.
la source