2012-02-17 12 views
18

Io uso molti binding in XAML e talvolta uso path = in un binding e talvolta no. In quali casi ho bisogno del percorso = e quando posso ometterlo?Qual è l'uso di Path = in XAML?

+4

correlati: [Differenza tra {binding PropertyName} e {binding Path = PropertyName}] (http://stackoverflow.com/ domande/4306657/differenza-tra- binding-propertyname-and-binding-path-propertyname) –

risposta

9

Può sempre essere omesso poiché è la proprietà predefinita dell'estensione XAML vincolante. Viene specificato esplicitamente solo per chiarezza quando vengono utilizzate più proprietà.

+0

Grazie ... in tal caso rimuoverò la parola chiave (almeno se l'evidenziazione della sintassi è ancora valida come in un altro commento). (Posso accettarlo in pochi minuti). –

+3

Non esiste una proprietà predefinita quando si tratta di estensioni di markup, per dirlo è troppo vago dato che ci occupiamo di costruttori qui. E non [non può essere sempre omesso] (http://stackoverflow.com/a/9383001/546730). –

4

È sempre possibile omettere il percorso = quando si scrive il percorso della proprietà direttamente dietro l'istruzione Binding.

{Binding MyProperty} 

è lo stesso di

{Binding Path=MyProperty} 

Quando si INLINE il percorso per la proprietà è necessario specificare con Path =

{Binding FallbackValue='HelloWorld', Path=MyProperty} 
2

Come Richard Szalay, ha detto, è facoltativo se è la prima proprietà. Ma nel mio parere è più facile da leggere se si inserisce la proprietà del percorso. Anche l'evidenziazione del codice sembra migliore.

9

Ciò è dovuto al fatto che la classe Binding ha un costruttore predefinito, utilizzato quando si hanno binding come {Binding FallbackValue='HelloWorld', Path=MyProperty} e un costruttore che ha un singolo argomento Path.

Quindi, quando v'è una lista di coppie proprietà/valore viene creato il legame come

new Binding(){ 
    Path="MyProperty" 
    ElementName="MyElement" 
} 

La seconda forma è utilizzata per attacchi come {Binding MyProperty, ...}. In questo caso si crea il legame come

new Binding("MyProperty"){ 
    ElementName = "MyElement", 
    ... 
} 

E 'sempre corretto (e forse più corretto) per specificare Path =, ma è possibile ottenere via senza di essa.

6

Il percorso è utilizzato per specificare il nome della proprietà dell'oggetto sottostante a cui eseguire il bind.

Quando si associa al DataContext, è possibile omettere il percorso:

{Binding MyProperty}  

{Binding Path=MyProperty} 

Quando è necessario specificare una fonte diversa dalla DataContext è possibile utilizzare Source, RelativeSource, o ElementName per riferirsi all'oggetto, in modo di solito necessario specificare a quale proprietà di esso si vuole impostare la rilegatura:

<Button Background="{Binding ElementName=refButton, Path=Background}"/> 

<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/> 
Problemi correlati