Quando si utilizza la sintassi tradizionale {Binding}, è possibile specificare il nome dell'elemento per puntare a un controllo specifico sulla pagina e poter accedere alle sue proprietà. Per esempio se la pagina si chiama page
si potrebbe fare:Alternativa a ElementName in x: Associazione con DataTemplates
{Binding ElementName=Page, Path=Name}
Con la sintassi {x:Bind} si dice
Con x: Bind, non è necessario utilizzare ElementName = xxx come parte del espressione vincolante. Con x: Bind, è possibile utilizzare il nome dell'elemento come prima parte del percorso per il binding poiché gli elementi denominati diventano campi all'interno della pagina o il controllo utente che rappresenta l'origine di associazione radice .
Così, per l'esempio precedente in {x: Bind} sarebbe
{x:Bind page.Name}
che funziona bene, fino a quando è all'interno di un modello di dati (ad esempio ItemTemplate di un ListView). Nel qual caso non funziona più in quanto è alla ricerca di Page
sul tipo di dati specificato che conduce alla seguente errore (assumendo che il mio tipo di dati è customer
):
XamlCompiler errore WMC1110: binding non valido percorso 'Page.Name ': Proprietà 'Pagina' non può essere trovato sul tipo di 'clienti'
Qual è la soluzione di utilizzare {x: Bind} sintassi con DataTemplates e controlli di accesso al di fuori del modello di dati?
codice di esempio è disponibile here (nota specifica commit)