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
.NET Desktop feedback