TemplateBinding — Rozszerzenie znaczników
Łączy wartość właściwości w szablonie formantu w taki sposób, że staje się ona wartością innej właściwości w formancie z szablonem.
Użycie atrybutu języka XAML
<object property="{TemplateBinding sourceProperty}" ... />
Użycie atrybutu języka XAML (we właściwości settera w szablonie lub stylu)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
Wartości XAML
| Wartość | Opis |
|---|---|
propertyName |
DependencyProperty.Name właściwości ustawionej w składni ustawiacza. |
sourceProperty |
Inna właściwość zależności, która istnieje na typie, który jest szablonowany, określona przez jej .DependencyProperty.Name — lub — „Spisana” nazwa właściwości definiowana przez typ inny niż docelowy typ, dla którego jest ustawiany szablon. Jest to w rzeczywistości .PropertyPath Zobacz PropertyPath XAML Syntax (Składnia xaml PropertyPath). |
Uwagi
A TemplateBinding to zoptymalizowana forma powiązania dla scenariuszy szablonów, analogiczna do skonstruowanej Binding za pomocą .{Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay} A TemplateBinding jest zawsze powiązaniem jednokierunkowym, nawet jeśli właściwości wiążą się domyślnie z powiązaniem dwukierunkowym. Obie używane właściwości muszą być właściwościami zależności. Aby osiągnąć powiązanie dwukierunkowe z elementem nadrzędnym z szablonem, zamiast tego użyj następującej instrukcji powiązania {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.
RelativeSource to kolejne rozszerzenie znaczników, które jest czasami używane w połączeniu z rozszerzeniem lub TemplateBinding zamiast w celu wykonania powiązania właściwości względnych w szablonie.
Opisywanie szablonów kontrolek jako koncepcji nie jest tu uwzględnione; Aby uzyskać więcej informacji, zobacz Control Styles and Templates (Style i szablony kontrolek).
Składnią atrybutu jest składnia najczęściej używana z tym rozszerzeniem znacznika. Token ciągu podany po ciągu TemplateBinding identyfikatora jest przypisywany jako Property wartość bazowej klasy TemplateBindingExtension rozszerzenia.
Można wprowadzić składnię obiektów, jednak nie pokazano jej tutaj, ponieważ nie ma praktycznego zastosowania. TemplateBinding Służy do wypełniania wartości w elementach ustawiających przy użyciu wyrażeń obliczanych, a użycie składni elementu obiektu dla TemplateBinding<Setter.Property> elementu do wypełnienia składni elementu właściwości jest niepotrzebnie pełne.
TemplateBinding Można również użyć w pełnej użyciu atrybutu, który określa Property właściwość jako parę property=value:
<object property="{TemplateBinding Property=sourceProperty}" ... />
Szczegółowe definicje są często przydatne w rozszerzeniach zawierających więcej niż jedną konfigurowalną właściwość albo gdy niektóre właściwości są opcjonalne. Ponieważ TemplateBinding ma tylko jedną ustawianą właściwość, która jest wymagana, to pełne użycie nie jest typowe.
W implementacji procesora XAML WPF obsługa tego rozszerzenia znaczników jest definiowana przez klasę TemplateBindingExtension .
TemplateBinding jest rozszerzeniem znaczników. Rozszerzenia znaczników są zazwyczaj implementowane w sytuacji, gdy istnieje wymóg, aby wartości atrybutów były wyprowadzane w postaci innej niż wartości literałów lub nazwy programów obsługi, a wymóg ma charakter bardziej globalny niż zwykłe umieszczenie konwerterów typów w niektórych typach lub właściwościach. Wszystkie rozszerzenia znaczników w języku XAML { używają znaków i } w składni atrybutów, czyli konwencji, 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.