Ich konnte es nicht verstehen BorderThickness="{TemplateBinding BorderThickness}
. Hier der 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>
Bitte erläutern Sie auch andere Bindungsarten.
wpf
mvvm-light
prjndhi
quelle
quelle
Antworten:
TemplateBinding wird zum Binden an die Elementeigenschaften innerhalb der Vorlagendefinition verwendet. In Ihrem Beispiel hätten Sie schreiben können
bedeutet, die Auffüllungseigenschaft des Rahmens an die Auffüllungseigenschaft von ... was zu binden ? Sie möchten sagen: "Auffüllungseigenschaft des Steuerelements, für das diese Vorlage verwendet wird." Sie können ihm keinen Namen geben, da Sie den x: Namen des Steuerelements zu diesem Zeitpunkt nicht kennen (selbst wenn Sie dies tun würden, würde es nicht funktionieren, da es sich in einem anderen Namescope befindet). Sie können dies jedoch tun, indem Sie eine relative Quelle definieren
oder verwenden Sie TemplateBinding, eine Verknüpfung (*) für oben
(*) TemplateBinding ist in diesen Template-Szenarien nicht nur weniger ausführlich, sondern weist auch einige Unterschiede zu einer regulären Bindung auf:
quelle
Ein Bild sagt mehr als tausend Worte. In diesem Fall ist es ein 7-minütiges Video: https://www.youtube.com/watch?v=z-0TZR-7xLI
EDIT: Beispiel:
Button
verfügt über eine Standard -ControlTemplate
Eigenschaft undHeight
EigentumControlTemplate
Eigenschaft von a,Button
indem Sie Ihre eigene schreiben (zum Beispiel möchten Sie eineEllipse
-looking-Schaltfläche anstelle vonRectangle
-looking erstellen).Ellipse
neue erstellt habenControlTemplate
, möchten SieEllipse
, dass die Größe der ursprünglichen Button-Height
Eigenschaft entsprichtTemplateBinding
, um Referenzen zu referenzierenButton
,Height
ohne sie zu benennenquelle
Eren Ersönmenz hat es bereits recht gut erklärt, aber ich möchte ihm eine andere Perspektive geben, um das Konzept besser zu verstehen.
In WPF ist jedes Steuerelement mehr oder weniger von seiner Darstellung getrennt. Sie können die Vorlage von Steuerelementen jederzeit ändern und sie ganz anders aussehen lassen. Eine Schaltfläche funktioniert wie erwartet mit einer, die beispielsweise
ControlTemplate
nur aus a bestehtRectangle
. Jetzt ist es manchmal notwendigControlTemplate
, dass die Eigenschaften des logischen Teils eines Steuerelements tatsächlich verwendet werden. Und dasTemplateBinding
ist es, was es sagt:ControlTemplate
"Verwenden Sie diese Eigenschaft des Steuerelements, das wir der visuellen Präsentation geben". Ein gutes Beispiel ist dieBackground
Eigenschaft für jedes Steuerelement, sie hat keine eigene Bedeutung, sie erhält ihre Bedeutung vonTemplateBinding
ihr für die untergeordnete Steuerung in derControlTemplate
.Die Bindung allein ist im MSDN sehr gut beschrieben . Dies ist ein sehr schöner Spickzettel, der tatsächlich direkt neben mir an meiner Wand hängt. Es gibt einen guten Überblick über die verschiedenen verfügbaren Bindungen.
quelle
Von Template Markup - Erweiterung ,
TemplateBinding
verbindet den Wert einer Eigenschaft in einer Steuerelementvorlage auf den Wert einer anderen offengelegte Eigenschaft auf der Templat Kontrolle. Mit anderen Worten, es dient zum Binden von Werten in einer Vorlage.Durch das Binden wird eine Eigenschaft zum Binden von Zielen und Datenquellen verbunden.
quelle