Estensione del markup TemplateBinding

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

Uso della sintassi XAML per gli attributi

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

Utilizzo dell'attributo XAML (per proprietà Set in modelli o stili)

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

Valori XAML

Valore Descrizione
propertyName DependencyProperty.Name della proprietà impostata nella sintassi del setter.
sourceProperty Altra proprietà di dipendenza esistente nel tipo basato su modelli, specificata da DependencyProperty.Name.

- oppure -

Nome della proprietà puntato definito da un tipo diverso rispetto al tipo di destinazione basato su modelli. Si tratta in effetti di un oggetto PropertyPath. Vedi Sintassi XAML di PropertyPath.

Osservazioni:

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

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

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

La sintassi per gli attributi è quella più comunemente utilizzata con questa estensione di markup. Il token di stringa fornito dopo la stringa dell'identificatore TemplateBinding viene assegnato come valore Property della classe dell'estensione TemplateBindingExtension sottostante.

La sintassi di elementi oggetto è possibile, ma non viene mostrata poiché non ha applicazioni realistiche. TemplateBinding viene utilizzato per inserire valori all'interno dei setter, tramite espressioni valutate e l'utilizzo della sintassi dell'elemento oggetto per TemplateBinding per riempire la sintassi dell'elemento di proprietà <Setter.Property> è inutilmente dettagliata.

L'oggetto TemplateBinding può anche essere utilizzato per un utilizzo dettagliato degli attributi che consente di specificare la proprietà Property come coppia proprietà=valore:

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

L'utilizzo dettagliato spesso è utile per le estensioni con più proprietà da impostare o nel caso in cui alcune proprietà siano facoltative. Poiché TemplateBinding presenta una sola proprietà da impostare, obbligatoria, l'utilizzo dettagliato non è tipico.

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

TemplateBinding è un'estensione di markup. Le estensioni di markup in genere vengono implementate quando per i valori dell'attributo devono essere utilizzati caratteri escape in modo che non vengano considerati come valori letterali o nomi di gestori e il requisito è più globale del semplice utilizzo di convertitori dei tipi su alcuni tipi o proprietà. Tutte le estensioni di markup in XAML usano i { caratteri e } nella sintassi degli attributi, ovvero la convenzione con cui un processore XAML riconosce che un'estensione di markup deve elaborare l'attributo. Per altre informazioni, vedere Estensioni di markup e XAML WPF.

Vedi anche