Condividi tramite


Estensione di markup TemplateBinding

Collega il valore di una proprietà in un modello di controllo come valore di un'altra proprietà nel controllo basato su modelli.

Utilizzo degli attributi XAML

<object property="{TemplateBinding sourceProperty}" ... />

Utilizzo degli attributi XAML (per la proprietà Setter nel modello o nello stile)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />  

Valori XAML

Valore Descrizione
propertyName DependencyProperty.Name della proprietà impostata nella sintassi del setter.
sourceProperty Un'altra proprietà di dipendenza presente sul tipo a cui si applica il modello, specificata dal relativo DependencyProperty.Name.

-o-

Nome di proprietà "puntato" definito da un tipo diverso rispetto al tipo di destinazione modellato. Si tratta in realtà di un PropertyPath. Consulta la sintassi XAML di PropertyPath.

Osservazioni

Un TemplateBinding è una forma ottimizzata di un Binding per gli scenari di modello, analogamente a un Binding costruito con {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}. Un TemplateBinding è sempre un'associazione unidirezionale, anche se le proprietà coinvolte per impostazione predefinita sono associazioni bidirezionali. Entrambe le proprietà coinvolte devono essere proprietà di dipendenza. Per ottenere l'associazione bidirezionale a un elemento padre basato su modelli, usare invece l'istruzione di associazione seguente {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.

RelativeSource è un'altra estensione di markup che a volte viene usata insieme o anziché TemplateBinding per eseguire l'associazione di proprietà relative all'interno di un modello.

La descrizione dei modelli di controllo come concetto non è descritta qui; Per altre informazioni, vedere modelli e stili di controllo.

La sintassi degli attributi è la sintassi più comune usata con questa estensione di markup. La stringa token fornita dopo l'identificatore TemplateBinding viene assegnata come valore Property della classe di estensione TemplateBindingExtension sottostante.

La sintassi degli elementi oggetto è possibile, ma non viene visualizzata perché non ha un'applicazione realistica. TemplateBinding viene utilizzato per riempire i valori all'interno dei setter, usando espressioni valutate e la sintassi degli elementi oggetto per TemplateBinding. L'uso della sintassi degli elementi di proprietà per riempire <Setter.Property> è inutilmente prolisso.

TemplateBinding può essere usato anche in un uso esteso dell'attributo che specifica la proprietà Property nella forma proprietà=valore.

<object property="{TemplateBinding Property=sourceProperty}" ... />

L'uso verboso è spesso utile per le estensioni che hanno più proprietà impostabili o se alcune proprietà sono facoltative. Poiché TemplateBinding dispone di un'unica proprietà impostabile e necessaria, questo utilizzo dettagliato non è tipico.

Nell'implementazione del processore XAML WPF la gestione per questa estensione di markup è definita dalla classe TemplateBindingExtension.

TemplateBinding è un'estensione di markup. Le estensioni di markup vengono in genere implementate quando è necessario che i valori degli attributi di escape siano diversi dai valori letterali o dai nomi dei gestori e il requisito è più globale rispetto all'inserimento di convertitori di tipi su determinati tipi o proprietà. Tutte le estensioni di markup in XAML usano i caratteri { e } nella sintassi dell'attributo, ovvero la convenzione in base alla quale un processore XAML riconosce che un'estensione di markup deve elaborare l'attributo. Per ulteriori informazioni, consultare Markup Extensions e WPF XAML.

Vedere anche