TemplateBinding, rozszerzenie znaczników
Łączy wartość właściwości w szablonie kontrolki, aby stała się wartością innej właściwości na kontrolce opartej na szablonie.
Użycie atrybutu XAML
<object property="{TemplateBinding sourceProperty}" ... />
Użycie atrybutów XAML (dla właściwości Setter w szablonie lub stylu)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
Wartości XAML
Wartość | Opis |
---|---|
propertyName |
DependencyProperty.Name właściwości ustawianej w składni ustawiającej. |
sourceProperty |
Inna właściwość zależności, która istnieje na typie, który jest szablonowany, określony przez jego DependencyProperty.Name. - lub - Nazwa właściwości z kropką, która jest definiowana przez inny typ niż typ docelowy użyty w szablonie. Jest to w rzeczywistości PropertyPath. Zobacz PropertyPath o składni XAML. |
Uwagi
TemplateBinding
jest zoptymalizowaną formą Binding
dla scenariuszy szablonowych, analogicznie do Binding
skonstruowanej z {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
.
TemplateBinding
jest zawsze jednokierunkowym powiązaniem, nawet jeśli zaangażowane właściwości mają domyślnie powiązanie dwukierunkowe. Obie zaangażowane właściwości muszą być właściwościami zależności. Aby uzyskać dwukierunkowe powiązanie z szablonowym elementem nadrzędnym, użyj następującej instrukcji powiązania zamiast {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}
.
RelativeSource to inne rozszerzenie znaczników, które jest czasami używane w połączeniu z TemplateBinding
lub zamiast niego w celu wykonania względnego powiązania właściwości w szablonie.
Opisywanie szablonów kontrolek jako koncepcji nie jest tutaj omówione; Aby uzyskać więcej informacji, zobacz Style kontrolek i szablony.
Składnia atrybutów jest najczęściej używaną składnią z tym rozszerzeniem znaczników. Token ciągu podany po identyfikatorze TemplateBinding
jest przypisany jako wartość Property podstawowej klasy rozszerzenia TemplateBindingExtension.
Składnia elementu obiektu jest możliwa, ale nie jest wyświetlana, ponieważ nie ma realistycznej aplikacji.
TemplateBinding
służy do wypełniania wartości w setterach, za pomocą obliczonych wyrażeń oraz wykorzystując składnię elementu obiektu dla TemplateBinding
. Wykorzystanie składni elementu właściwości dla <Setter.Property>
jest nadmiernie rozbudowane i niepotrzebnie skomplikowane.
TemplateBinding
można również użyć w rozbudowanym użyciu atrybutu, który określa właściwość Property jako parę właściwość=wartość.
<object property="{TemplateBinding Property=sourceProperty}" ... />
Użycie w trybie szczegółowym jest często przydatne w przypadku rozszerzeń, które mają więcej niż jedną właściwość możliwą do ustawienia, albo jeśli niektóre właściwości są opcjonalne. Ponieważ TemplateBinding
ma tylko jedną konfigurowalną właściwość, która jest wymagana, tak rozbudowane użycie nie jest typowe.
W implementacji procesora WPF XAML obsługa tego rozszerzenia znaczników jest definiowana przez klasę TemplateBindingExtension.
TemplateBinding
jest rozszerzeniem dla języka znaczników. Rozszerzenia znaczników są zazwyczaj implementowane, gdy istnieje konieczność zmiany sposobu interpretacji wartości atrybutów, aby były inne niż dosłowne wartości lub nazwy procedur obsługi, a potrzeba ta ma szerszy zakres niż po prostu zastosowanie konwerterów typów na niektórych typach lub właściwościach. Wszystkie rozszerzenia znaczników w języku XAML używają {
i }
znaków w ich składni atrybutu, która jest konwencją, zgodnie z którą procesor XAML rozpoznaje, że rozszerzenie znaczników musi przetworzyć atrybut. Aby uzyskać więcej informacji, zobacz Rozszerzenia znaczników i WPF XAML.
Zobacz też
.NET Desktop feedback