Condividi tramite


Associazione dell'estensione di markup

Rinvia un valore della proprietà come valore associato a dati, creando un oggetto espressione intermedio e interpretando il contesto dati applicabile all'elemento e al relativo binding in fase di esecuzione.

Utilizzo delle espressioni di 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. Fanno parte di una notazione per indicare che è possibile usare zero o più coppie di valori bindProp, con un , separatore tra di esse e le coppie di valori bindProp==precedenti.

È possibile impostare una delle proprietà elencate nella sezione "Binding Properties that Can Be Set with the Binding Extension" (Proprietà di associazione che possono essere impostate con l'estensione binding) usando attributi di un Binding elemento oggetto. Tuttavia, questo non è realmente l'utilizzo dell'estensione di markup di Binding, è solo l'elaborazione XAML generale degli attributi che impostano le proprietà della classe CLR Binding . In altre parole, <Binding bindProp1="value1"[ bindPropN valueN=""]*/> è una sintassi equivalente per gli attributi di utilizzo degli Binding elementi oggetto anziché un Binding utilizzo delle espressioni. Per informazioni sull'utilizzo degli attributi XAML di proprietà specifiche di Binding, vedere la sezione "Utilizzo attributi XAML" della proprietà pertinente di nella libreria di Binding classi .NET Framework.

Valori XAML

valore Descrizione
bindProp1, bindPropN Nome della Binding proprietà o BindingBase da impostare. Non tutte le Binding proprietà possono essere impostate con l'estensione Binding e alcune proprietà sono impostabili solo all'interno di un'espressione Binding usando altre estensioni di markup annidate. Vedere la sezione "Binding Properties that Can Be Set with the Binding Extension" (Proprietà di binding che possono essere impostate con l'estensione di binding).
value1, valueN Il valore per cui impostare la proprietà. La gestione del valore dell'attributo è in definitiva specifica del tipo e della logica della proprietà specifica impostata Binding .
path Stringa di percorso che imposta la proprietà implicita Binding.Path . Vedi anche Sintassi XAML di PropertyPath.

{Binding} non qualificato

L'utilizzo {Binding} illustrato in "Binding Expression Usage" crea un Binding oggetto con valori predefiniti, che include un valore iniziale Binding.Path di null. Questa operazione è ancora utile in molti scenari, perché la creazione Binding potrebbe basarsi su proprietà di data binding chiave, Binding.Path ad esempio e Binding.Source impostate nel contesto dei dati in fase di esecuzione. Per altre informazioni sul concetto di contesto dati, vedere Data Binding.

Percorso implicito

L'estensione Binding di markup usa Binding.Path come "proprietà predefinita" concettuale, in cui Path= non è necessario comparire nell'espressione. Se si specifica un'espressione Binding con un percorso implicito, il percorso implicito deve essere visualizzato prima nell'espressione, prima di qualsiasi altravalue bindProp=coppia in cui la Binding proprietà viene specificata per nome. Ad esempio: {Binding PathString}, dove PathString è una stringa che viene valutata come 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 di virgole, {Binding LastName, Mode=TwoWay}ad esempio .

Proprietà di associazione che possono essere impostate con l'estensione di associazione

La sintassi illustrata in questo argomento usa l'approssimazione generica bindProp=value , perché esistono molte proprietà di lettura/scrittura di BindingBase o Binding che possono essere impostate tramite la sintassi dell'estensione Binding /espressione di markup. Possono essere impostati in qualsiasi ordine, ad eccezione di un oggetto implicito Binding.Path. È possibile specificare Path=in modo esplicito , nel qual caso può essere impostato in qualsiasi ordine. In pratica, è possibile impostare zero o più delle proprietà nell'elenco seguente, usando bindProp=value coppie separate da virgole.

Molti di questi valori di proprietà richiedono tipi di oggetto che non supportano una conversione di tipi nativi da una sintassi di testo in XAML e richiedono pertanto estensioni di markup per essere impostate come valore di attributo. Per altre informazioni, vedere la sezione Utilizzo attributi XAML nella libreria di classi .NET Framework per ogni proprietà. La stringa usata per la sintassi dell'attributo XAML con o senza ulteriori utilizzi di estensione di markup è fondamentalmente uguale al valore specificato in un'espressioneBinding, con l'eccezione che non si inseriscono virgolette intorno a ognunavalue bindProp=nell'espressione.Binding

  • BindingGroupName: stringa che identifica un possibile gruppo di binding. Si tratta di un concetto di associazione relativamente avanzato; vedere la pagina di riferimento per BindingGroupName.

  • BindsDirectlyToSource: valore booleano, può essere true o false. Il valore predefinito è false.

  • Converter: può essere impostato come bindProp=value stringa nell'espressione, ma a tale scopo è necessario un riferimento all'oggetto per il valore, ad esempio un'estensione di markup StaticResource. Il valore in questo caso è un'istanza di una classe di convertitore personalizzata.

  • ConverterCulture: impostabile nell'espressione come identificatore basato su standard; vedere l'argomento di riferimento per ConverterCulture.

  • ConverterParameter: può essere impostato come bindProp=value stringa nell'espressione, ma dipende dal tipo del parametro passato. Se si passa un tipo riferimento per il valore, questo utilizzo richiede un riferimento a un oggetto, ad esempio un'estensione di markup StaticResource annidata.

  • ElementName: che si escludono RelativeSource a vicenda e Source; ognuna di queste proprietà di associazione rappresenta una metodologia di associazione specifica. Vedere Panoramica del data binding.

  • FallbackValue: può essere impostato come bindProp=value stringa nell'espressione, ma dipende dal tipo del valore passato. Se si passa un tipo riferimento, è necessario un riferimento a un oggetto, ad esempio un'estensione di markup StaticResource annidata.

  • IsAsync: valore booleano, può essere true o false. Il valore predefinito è false.

  • Mode: value è un nome costante dell'enumerazione BindingMode . Ad esempio: {Binding Mode=OneWay}.

  • NotifyOnSourceUpdated: valore booleano, può essere true o false. Il valore predefinito è false.

  • NotifyOnTargetUpdated: valore booleano, può essere true o false. Il valore predefinito è false.

  • NotifyOnValidationError: valore booleano, può essere true o false. Il valore predefinito è false.

  • Path: stringa che descrive un percorso in un oggetto dati o in un modello a oggetti generale. Il formato fornisce diverse convenzioni per attraversare un modello a oggetti che non può essere descritto adeguatamente in questo argomento. Vedi Sintassi XAML di PropertyPath.

  • RelativeSource: che si escludono a vicenda rispetto a ElementName e Source; ognuna di queste proprietà di associazione rappresenta una metodologia di associazione specifica. Vedere Panoramica del data binding. Richiede un utilizzo di RelativeSource MarkupExtension annidato per specificare il valore.

  • Source: che si escludono RelativeSource a vicenda e ElementName; ognuna di queste proprietà di associazione rappresenta una metodologia di associazione specifica. Vedere Panoramica del data binding. Richiede un utilizzo di estensione annidato, in genere un'estensione di markup StaticResource che fa riferimento a un'origine dati oggetto da un dizionario risorse con chiave.

  • StringFormat: stringa che descrive una convenzione di formato stringa per i dati associati. Si tratta di un concetto di associazione relativamente avanzato; vedere la pagina di riferimento per StringFormat.

  • TargetNullValue: può essere impostato come bindProp=value stringa nell'espressione, ma dipende dal tipo del parametro passato. Se si passa un tipo riferimento per il valore, è necessario un riferimento a un oggetto, ad esempio un'estensione di markup StaticResource annidata.

  • UpdateSourceTrigger: value è un nome costante dell'enumerazione UpdateSourceTrigger . Ad esempio: {Binding UpdateSourceTrigger=LostFocus}. I controlli specifici hanno potenzialmente valori predefiniti diversi per questa proprietà di associazione. Vedere UpdateSourceTrigger.

  • ValidatesOnDataErrors: valore booleano, può essere true o false. Il valore predefinito è false. Vedere la sezione Osservazioni.

  • ValidatesOnExceptions: valore booleano, può essere true o false. Il valore predefinito è false. Vedere la sezione Osservazioni.

  • XPath: stringa che descrive un percorso in XMLDOM di un'origine dati XML. Vedere Eseguire l'associazione a dati XML tramite query XMLDataProvider e XPath.

Di seguito sono riportate le proprietà di Binding che non possono essere impostate utilizzando il modulo di Binding estensione/{Binding} espressione di markup.

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

  • ValidationRules: la proprietà accetta una raccolta generica di ValidationRule oggetti . Questa operazione può essere espressa come elemento property in un Binding elemento oggetto, ma non dispone di una tecnica di analisi degli attributi prontamente disponibile per l'utilizzo in un'espressione Binding . Vedere l'argomento di riferimento per ValidationRules.

  • XmlNamespaceManager

Osservazioni:

Importante

In termini di precedenza della proprietà di dipendenza, un'espressione Binding equivale a un valore impostato localmente. Se si imposta un valore locale per una proprietà che in precedenza aveva un'espressione Binding , l'oggetto Binding viene rimosso completamente. Per altri dettagli, vedere Precedenza del valore della proprietà di dipendenza.

La descrizione del data binding a un livello di base non è descritta in questo argomento. Vedere Panoramica del data binding.

Nota

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

I valori booleani per XAML non fanno distinzione tra maiuscole e minuscole. Ad esempio, è possibile specificare {Binding NotifyOnValidationError=true} o {Binding NotifyOnValidationError=True}.

Le associazioni che implicano la convalida dei dati vengono in genere specificate da un elemento esplicito Binding anziché come {Binding ...} espressione e l'impostazione ValidatesOnDataErrors o ValidatesOnExceptions in un'espressione non è comune. Ciò è dovuto al fatto che la proprietà ValidationRules complementare non può essere impostata facilmente nel formato dell'espressione. Per altre informazioni, vedere Implementare la convalida dell'associazione.

Binding è 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 ai convertitori di tipi attribuiti in determinati tipi o proprietà. Tutte le estensioni di markup in XAML usano i { caratteri e } nella sintassi dell'attributo, ovvero la convenzione con cui un processore XAML riconosce che un'estensione di markup deve elaborare il contenuto della stringa. Per altre informazioni, vedere Estensioni di markup e XAML WPF.

Binding è un'estensione di markup atipica in quanto la Binding classe che implementa la funzionalità di estensione per l'implementazione XAML di WPF implementa anche diversi altri metodi e proprietà non correlati a XAML. Gli altri membri sono progettati per rendere Binding una classe più versatile e autonoma in grado di gestire molti scenari di data binding oltre a funzionare come estensione di markup XAML.

Vedi anche