Nie mogłem zrozumieć BorderThickness="{TemplateBinding BorderThickness}
. Tutaj kod:
<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>
Prosimy również o wyjaśnienie innych rodzajów wiązań.
wpf
mvvm-light
prjndhi
źródło
źródło
Odpowiedzi:
TemplateBinding służy do tworzenia powiązań z właściwościami elementu w definicji szablonu. W swoim przykładzie mogłeś napisać
co ma na celu powiązanie właściwości wypełnienia obramowania z właściwością wypełnienia… czego? Chciałbyś powiedzieć: „właściwość dopełniania kontrolki, do której jest używany ten szablon”. Nie możesz nadać mu nazwy, ponieważ w tej chwili nie znasz x: Nazwa kontrolki (nawet gdybyś to zrobił, nie zadziała, ponieważ znajduje się w innym zakresie nazw). Możesz to jednak zrobić, definiując źródło względne
lub użyj TemplateBinding, które jest skrótem (*) do powyższego
(*) Oprócz tego, że jest mniej rozwlekły w tych scenariuszach tworzenia szablonów, TemplateBinding ma kilka różnic w porównaniu ze zwykłym powiązaniem:
źródło
Obraz jest wart tysiąca słów. W tym przypadku jest to 7 minut wideo: https://www.youtube.com/watch?v=z-0TZR-7xLI
EDYCJA: Przykład:
Button
ma domyślnąControlTemplate
właściwość iHeight
właściwośćControlTemplate
właściwość aButton
, pisząc własną (na przykład chcesz utworzyćEllipse
przycisk -widok zamiastRectangle
-widzenia)Ellipse
nowegoControlTemplate
, chceszEllipse
mieć ten sam rozmiar, co oryginalnaHeight
właściwość ButtonTemplateBinding
w celu odniesieniaButton
„sHeight
bez nazywania goźródło
Eren Ersönmenz wyjaśnił to już całkiem dobrze, ale chciałbym nadać mu inną perspektywę, aby lepiej zrozumieć tę koncepcję.
W WPF każda kontrolka jest mniej więcej oddzielona od swojej prezentacji. Zawsze możesz zmienić szablon kontrolek i sprawić, by wyglądał zupełnie inaczej. Przycisk działa zgodnie z oczekiwaniami z na przykład
ControlTemplate
tylko składającym się zRectangle
. Czasami konieczne jest,ControlTemplate
aby faktycznie używał właściwości logicznej części kontrolki. I toTemplateBinding
do tego po prostu mówiControlTemplate
„Użyj tej właściwości kontrolki, którą dajemy wizualną prezentację”. Dobrym przykładem jestBackground
własność na każdej kontrolce, która sama w sobie nie ma znaczenia, uzyskuje swoje znaczenieTemplateBinding
do kontroli potomnej wControlTemplate
.Samo wiązanie jest bardzo dobrze opisane w MSDN . To bardzo fajna ściągawka, która w rzeczywistości wisi na mojej ścianie tuż obok mnie. Daje dobry przegląd wszystkich różnych dostępnych wiązań.
źródło
Od TemplateBinding Markup Extension ,
TemplateBinding
łączy wartość właściwości w szablonie sterowania do wartości innej własności wyeksponowane na matrycy kontrolą. Innymi słowy, służy do wiązania wartości w szablonie.Powiązanie łączy właściwość powiązań obiektów docelowych i źródeł danych.
źródło