Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
È disponibile un nuovo meccanismo di associazione per Windows 10, ottimizzato per le prestazioni e la produttività degli sviluppatori. Vedere l'estensione di markup {x:Bind} .
Annotazioni
Per informazioni generali sull'uso del data binding nella tua app con {Binding} (e per un confronto completo tra {x:Bind} e {Binding}), vedi Data Binding Approfondito.
L'estensione di markup {Binding} viene usata per associare proprietà sui controlli ai valori provenienti da un'origine dati, come ad esempio il codice. L'{Binding} estensione di markup viene convertita in fase di caricamento XAML in un'istanza della classe Binding. Questo oggetto di associazione ottiene un valore da una proprietà da un'origine dati e lo inserisce nella proprietà nel controllo. L'oggetto di associazione può essere configurato facoltativamente per osservare le modifiche apportate al valore della proprietà dell'origine dati e aggiornarsi in base a tali modifiche. Può anche essere configurato facoltativamente per inviare le modifiche al valore del controllo alla proprietà di origine. La proprietà che rappresenta la destinazione di un data binding deve essere una proprietà dipendente. Per ulteriori informazioni, vedere la panoramica delle proprietà di dipendenza .
{Binding} ha la stessa precedenza della proprietà di dipendenza di un valore locale e l'impostazione di un valore locale nel codice imperativo rimuove l'effetto di qualsiasi {Binding} impostato nel markup.
Utilizzo degli attributi XAML
<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
Termine | Descrizione |
---|---|
percorsoProprietà | Stringa che specifica il percorso della proprietà per il collegamento. Altre informazioni sono disponibili nella sezione percorso proprietà di seguito. |
bindingProprietà |
propName=valore[, propName=valore]* Una o più proprietà di associazione specificate usando una sintassi di coppia nome/valore. |
propName | Nome della stringa della proprietà da impostare sull'oggetto binding. Ad esempio, "Convertitore". |
valore | Il valore da impostare per la proprietà. La sintassi dell'argomento dipende dalla proprietà di Proprietà della classe Binding che può essere impostata con {Binding} sezione seguente. |
Percorso della proprietà
Percorso descrive la proprietà a cui è associata (proprietà di origine). Path è un parametro posizionale, ovvero è possibile usare il nome del parametro in modo esplicito ({Binding Path=EmployeeID}
) oppure specificarlo come primo parametro senza nome ({Binding EmployeeID}
).
Il tipo di Path è un percorso di proprietà, ovvero una stringa che restituisce una proprietà o una sottoproprietà del tipo personalizzato o di un tipo di framework. Il tipo può essere un DependencyObject, ma non deve necessariamente esserlo. I passaggi in un percorso di proprietà sono delimitati da punti (.) ed è possibile includere più delimitatori per attraversare le sottoproprietà successive. Usare il delimitatore punto indipendentemente dal linguaggio di programmazione usato per implementare l'oggetto a cui è associato.
Ad esempio, per associare la UI alla proprietà del nome di un oggetto dipendente, il percorso della proprietà potrebbe essere "Employee.FirstName". Se si associa un controllo elementi a una proprietà che contiene le persone a carico di un dipendente, il percorso della proprietà potrebbe essere "Employee.Dependents", e il modello di elemento del controllo elementi si incarica di visualizzare gli elementi in "Dipendenti".
Se l'origine dati è una raccolta, un percorso di proprietà può specificare gli elementi nella raccolta in base alla posizione o all'indice. Ad esempio, "Teams[0].Players", dove il valore letterale "[]" racchiude "0" che specifica il primo elemento di una raccolta.
Quando si utilizza un ElementName binding con un DependencyObject esistente, è possibile utilizzare le proprietà associate come parte del percorso della proprietà. Per disambiguare una proprietà associata ed evitare che il punto intermedio nel nome della proprietà associata venga considerato un passaggio in un percorso di proprietà, racchiudere tra parentesi il nome della proprietà associata qualificato dal proprietario; ad esempio (AutomationProperties.Name)
.
Un oggetto intermedio percorso proprietà viene archiviato come oggetto PropertyPath in una rappresentazione in fase di esecuzione, ma la maggior parte degli scenari non deve interagire con un PropertyPath oggetto nel codice. In genere puoi specificare le informazioni di associazione necessarie usando XAML.
Per ulteriori informazioni sulla sintassi di stringa di un percorso di proprietà, i percorsi delle proprietà nelle aree funzionali delle animazioni e la costruzione di un oggetto PropertyPath
Proprietà della classe Binding che possono essere impostate con {Binding}
{Binding} è illustrato con la sintassi bindingProperties segnaposto perché sono presenti più proprietà di lettura/scrittura di un Binding che è possibile impostare nell'estensione di markup. Le proprietà possono essere impostate in qualsiasi ordine con coppie propName=valore separate da virgole. Alcune delle proprietà richiedono tipi che non supportano una conversione di tipo, quindi richiedono proprie estensioni di markup annidate all'interno dell' {Binding}.
Proprietà | Descrizione |
---|---|
Percorso | Fare riferimento al paragrafo percorso proprietà precedente. |
convertitore | Specifica un oggetto convertitore chiamato dal motore di associazione. Il convertitore può essere impostato nel markup usando l'estensione di markup {StaticResource} per fare riferimento a quell'oggetto da un dizionario di risorse. |
ConverterLanguage | Specifica le impostazioni culturali da utilizzare dal convertitore. Se si imposta Converter. La cultura è impostata come identificatore basato sugli standard. Per altre info, vedi ConverterLanguage |
ConverterParameter | Specifica un parametro del convertitore che può essere usato nella logica del convertitore. Se stai impostando Converter.) La maggior parte dei convertitori utilizza una logica semplice che ricava tutte le informazioni necessarie dal valore passato per convertirlo, e non necessita di un valore ConverterParameter. Il parametro ConverterParameter è destinato a implementazioni del convertitore più complesse con logica condizionale che gestiscono ciò che viene passato del ConverterParameter. Puoi scrivere un convertitore che usa valori diversi dalle stringhe, ma questo non è comune, vedi Osservazioni in ConverterParameter per altre info. |
ElementName | Specifica una sorgente dati facendo riferimento a un altro elemento nello stesso costrutto XAML che ha una proprietà Name o un attributo x:Name. Viene spesso usato per condividere valori correlati o usare le sottoproprietà di un elemento dell'interfaccia utente per fornire un valore specifico per un altro elemento, ad esempio in un modello di controllo XAML. |
FallbackValue | Specifica un valore da visualizzare quando non è possibile risolvere l'origine o il percorso. |
modalità | Specifica la modalità di associazione, come una delle seguenti opzioni: "OneTime", "OneWay" o "TwoWay". Questi corrispondono ai nomi costanti dell'enumerazione BindingMode. Il valore predefinito è "OneWay". Si noti che questo comportamento è diverso dal valore predefinito per {x:Bind}, ovvero "OneTime". |
RelativeSource | Specifica un'origine dati descrivendo la posizione dell'origine di associazione rispetto alla posizione della destinazione di associazione. Questa operazione viene spesso usata nelle associazioni all'interno dei modelli di controllo XAML. Impostazione dell'estensione di markup {RelativeSource}. |
origine | Specifica l'origine dati dell'oggetto. All'interno dell'estensione di markup binding, la proprietà source richiede un riferimento a un oggetto, come un riferimento all'estensione di markup {StaticResource}. Se questa proprietà non viene specificata, il contesto dei dati che agisce specifica l'origine. È più tipico non specificare un valore di origine in singole associazioni e basarsi invece sul condiviso DataContext per più associazioni. Per ulteriori informazioni, vedi DataContext o Data Binding in profondità. |
TargetNullValue | Specifica un valore da visualizzare quando il valore di origine viene risolto, ma viene esplicitamente null. |
UpdateSourceTrigger | Specifica l'intervallo di aggiornamento dell'origine dell'associazione. Se non specificato, il valore predefinito è Default. |
Nota Se si sta convertendo il markup da {x:Bind} a {Binding}, si tenga presente le differenze nei valori predefiniti per la proprietà Mode.
Converter, ConverterLanguage e ConverterLanguage sono tutti correlati allo scenario di conversione di un valore o di un tipo dall'origine del binding in un tipo o valore compatibile con la proprietà di destinazione del binding. Per altre info ed esempi, vedi la sezione "Conversioni di dati" di Data binding in modo approfondito.
Annotazioni
A partire da Windows 10, versione 1607, il framework XAML fornisce un convertitore da Boolean a Visibility predefinito. Il convertitore mappa true al valore di enumerazione Visible e false al valore Collapsed, in modo da poter associare una proprietà Visibility a un Boolean senza creare un convertitore. Per usare il convertitore integrato, la versione minima dell'SDK di destinazione dell'app deve essere 14393 o successiva. Non puoi usarla quando la tua app è destinata a versioni precedenti di Windows 10. Per ulteriori informazioni sulle versioni target, vedere Codice adattivo della versione.
Source, RelativeSourcee ElementName specificano un'origine di associazione, pertanto si escludono a vicenda.
Suggerimento Se è necessario specificare una singola parentesi graffa per un valore, ad esempio in Path o ConverterParameter, precedila con una barra rovesciata: \{
. In alternativa, racchiudere l'intera stringa contenente le parentesi graffe che richiedono l'escape in un set di virgolette secondarie, ad esempio ConverterParameter='{Mix}'
.
Esempi
<!-- binding a UI element to a view model -->
<Page ... >
<Page.DataContext>
<local:BookstoreViewModel/>
</Page.DataContext>
<GridView ItemsSource="{Binding BookSkus}" SelectedItem="{Binding SelectedBookSku, Mode=TwoWay}" ... />
</Page>
<!-- binding a UI element to another UI element -->
<Page ... >
<Page.Resources>
<local:S2Formatter x:Key="GradeConverter"/>
</Page.Resources>
<Slider x:Name="sliderValueConverter" ... />
<TextBox Text="{Binding Path=Value, ElementName=sliderValueConverter,
Mode=OneWay,
Converter={StaticResource GradeConverter}}"/>
</Page>
Il secondo esempio imposta quattro proprietà diverse di Binding: ElementName, Path, Mode e Converter.
percorso in questo caso è esplicitamente nominato come proprietà vincolo. Il Path viene valutato come origine di data binding, che è un altro oggetto nell'albero degli oggetti dello stesso runtime, un cursore denominato sliderValueConverter
.
Si noti che il valore della proprietà Converter utilizza un'altra estensione di markup, l'estensione di markup {StaticResource}, quindi sono presenti due utilizzi di estensioni di markup annidati qui. L'elemento interno è valutato per primo, così che una volta ottenuta la risorsa ci sia un pratico IValueConverter (una classe personalizzata di cui viene creata un'istanza dall'elemento local:S2Formatter
nelle risorse) che il binding può utilizzare.
Supporto per strumenti
Microsoft IntelliSense in Microsoft Visual Studio visualizza le proprietà del contesto dati durante la creazione di {Binding} nell'editor di markup XAML. Non appena si digita "{Binding", le proprietà del contesto dati appropriate per Percorso vengono visualizzate nell'elenco a discesa. IntelliSense consente anche di usare le altre proprietà di Binding. Per il corretto funzionamento, è necessario disporre del contesto dati o del contesto dati in fase di progettazione impostato nella pagina di markup. Vai a definizione (F12) funziona anche con {Binding}. In alternativa, è possibile usare la finestra di dialogo associazione dati.