Associazione dell'estensione di markup

Rinvia la trasformazione di un valore di proprietà in un valore associato a dati creando un oggetto espressione intermedio e interpretando il contesto dati applicato all'elemento e alla relativa associazione in fase di esecuzione.

Utilizzo dell'espressione Binding

<object property="{Binding}" .../>
-or-
<object property="{Binding bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>

Note sulla sintassi

In queste sintassi [] e * non sono valori letterali. Sono parte di una notazione per indicare che è possibile utilizzare zero o più coppie bindProp=valore, in cui un separatore , delimita e precede ogni coppia bindProp=valore.

Tutte le proprietà elencate nella sezione "Proprietà Binding che possono essere impostate con l'estensione Binding" possono essere impostate anche tramite gli attributi di un elemento oggetto Binding. Questa caratteristica, tuttavia, non costituisce l'effettivo utilizzo dell'estensione di markup di Binding, ma solo l'elaborazione generale di attributi che impostano proprietà della classe CLR Binding. In altri termini, <Binding propAss1="valore1"[ propAssN="valoreN"]*/> è una sintassi equivalente per gli attributi dell'utilizzo dell'elemento oggetto Binding anziché dell'utilizzo dell'espressione Binding. Per ulteriori informazioni sull'utilizzo di attributi XAML per proprietà specifiche di Binding, vedere la sezione "Utilizzo della sintassi XAML per attributi" della proprietà pertinente di Binding nella libreria di classi .NET Framework.

Valori XAML

bindProp1, bindPropN

Nome della proprietà Binding o BindingBase da impostare. Non tutte le proprietà Binding possono essere impostate con l'estensione Binding e alcune proprietà possono essere impostate all'interno di un'espressione Binding solo utilizzando ulteriori estensioni di markup annidate. Vedere la sezione "Proprietà Binding che possono essere impostate con l'estensione Binding".

value1, valueN

Valore su cui impostare la proprietà. La gestione del valore dell'attributo è essenzialmente specifica per il tipo e la logica della proprietà Binding specifica impostata.

path

Stringa di percorso che imposta la proprietà Binding.Path implicita. Vedere anche Sintassi XAML di PropertyPath.

{Binding} non qualificato

L'utilizzo di {Binding} illustrato in "Utilizzo dell'espressione Binding" crea un oggetto Binding con valori predefiniti, che include una proprietà Binding.Path iniziale con valore null. Si tratta di una caratteristica tuttora utile in molti scenari, in quanto l'oggetto Binding creato potrebbe basarsi su proprietà di associazione dati chiave, ad esempio le proprietà Binding.Path e Binding.Source impostate nel contesto dati di runtime. Per ulteriori informazioni sul concetto di contesto dati, vedere Associazione dati (WPF).

Percorso implicito

L'estensione di markup Binding utilizza Binding.Path come "proprietà predefinita" concettuale, in cui Path= non deve essere visualizzato nell'espressione. Se si specifica un'espressione Binding con un percorso implicito, tale percorso implicito deve essere visualizzato innanzitutto nell'espressione, prima di qualsiasi altra coppia bindProp=value in cui la proprietà Binding è specificata per nome. Ad esempio: {Binding PathString}, dove PathString è una stringa che restituisce il valore di Binding.Path nell'oggetto Binding creato dall'utilizzo dell'estensione di markup. È possibile aggiungere un percorso implicito con altre proprietà denominate dopo il separatore virgola, ad esempio {Binding LastName, Mode=TwoWay}.

Proprietà Binding che possono essere impostate con l'estensione Binding

La sintassi illustrata in questo argomento utilizza l'approssimazione bindProp=value generica, in quanto sono presenti molte proprietà di lettura/scrittura di BindingBase o Binding che possono essere impostate tramite sintassi per estensioni di markup e/o espressioni Binding. Queste proprietà possono essere impostate in qualsiasi ordine, ad eccezione di un oggetto Binding.Path implicito. È possibile specificare in modo esplicito Path=. In questo caso, questa proprietà potrà essere impostata in qualsiasi ordine. Fondamentalmente, è possibile impostare zero o più proprietà incluse nell'elenco seguente utilizzando coppie bindProp=value separate da virgole.

Alcuni di questi valori di proprietà richiedono tipi di oggetto che non supportano una conversione dei tipi nativi da una sintassi di testo in XAML. Sono pertanto necessarie estensioni di markup per impostare tali valori come valori di attributo. Per ulteriori informazioni, controllare la sezione Utilizzo della sintassi XAML per attributi nella libreria di classi .NET Framework per ogni proprietà. La stringa utilizzata per la sintassi degli attributi XAML con o senza un ulteriore utilizzo di estensioni di markup è fondamentalmente identica al valore specificato in un'espressione Binding, ad eccezione del fatto che non è necessario racchiudere tra virgolette ogni coppia bindProp=value nell'espressione Binding.

Di seguito sono riportate le proprietà di Binding che non possono essere impostate utilizzando l'estensione di markup Binding o il formato di espressione {Binding}.

  • UpdateSourceExceptionFilter: questa proprietà prevede un riferimento a un'implementazione di callback. Nella sintassi XAML non è possibile fare riferimento a callback/metodi diversi dai gestori eventi.

  • ValidationRules: proprietà che accetta un insieme generico di oggetti ValidationRule. Tale insieme può essere espresso come elemento proprietà in un elemento oggetto Binding, ma non dispone tempestivamente di alcuna tecnica di analisi degli attributi per l'utilizzo in un'espressione Binding. Vedere l'argomento di riferimento per ValidationRules.

  • XmlNamespaceManager

Note

Nota importanteImportante

In termini di precedenza della proprietà di dipendenza, un'espressione Binding equivale a un valore impostato localmente.Se viene impostato un valore locale per una proprietà che in precedenza conteneva un'espressione Binding, Binding viene completamente rimosso.Per informazioni dettagliate, vedere Precedenza del valore della proprietà di dipendenza.

La descrizione dell'associazione dati a un livello di base non è discussa in questo argomento. Vedere Cenni preliminari sull'associazione dati.

NotaNota

MultiBinding e PriorityBinding non supportano la sintassi di estensione di XAML. Si utilizzano invece gli elementi di proprietà.Vedere gli argomenti di riferimento per MultiBinding e PriorityBinding.

I valori booleani di XAML non prevedono la distinzione tra maiuscole e minuscole. Ad esempio è possibile specificare {Binding NotifyOnValidationError=true} oppure {Binding NotifyOnValidationError=True}.

Le associazioni che comportano la convalida dei dati in genere vengono specificate da un elemento Binding esplicito piuttosto che come un'espressione {Binding ...} e impostare ValidatesOnDataErrors o ValidatesOnExceptions in un'espressione non è comune. Ciò è dovuto al fatto che non è possibile impostare prontamente la proprietà ValidationRules complementare nel formato di espressione. Per ulteriori informazioni, vedere Procedura: implementare la convalida dell'associazione.

Binding è un'estensione di markup. Le estensioni di markup vengono in genere implementate quando un requisito stabilisce che i valori degli attributi non devono essere diversi da valori letterali o nomi di gestori e tale requisito è più globale dei convertitori di tipi assegnati come attribuito ad alcuni tipi o proprietà. Tutte le estensioni di markup in XAML utilizzano i caratteri { e } nella relativa sintassi degli attributi. Si tratta della convenzione che consente al processore XAML di determinare che un'estensione di markup deve elaborare il contenuto della stringa. Per ulteriori informazioni, vedere Estensioni di markup e XAML WPF.

Binding è un'estensione di markup insolita, nel senso che la classe Binding che implementa la funzionalità dell'estensione per l'implementazione XAML di WPF implementa anche numerosi altri metodi e proprietà non correlati a XAML. Gli altri membri vengono utilizzati per rendere Binding una classe più versatile e indipendente in grado di gestire molti scenari di associazione dati, nonché di fungere da estensione di markup XAML.

Vedere anche

Riferimenti

Binding

Concetti

Cenni preliminari sull'associazione dati

Cenni preliminari su XAML (WPF)

Estensioni di markup e XAML WPF