Udostępnij za pośrednictwem


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ż