2009-04-29 16 views
5

duplicati di:Differenza betwwen DataContext e ItemSource in WPF

Why are DataContext and ItemsSource not redundant?


In WPF possiamo assegnare la lista di elemento da ComboBox in 2 modi

//CODE #1 
//WPF 
<ComboBox name="cmbItems" ItemSource={Binding} /> 

//C# 
cmbItems.DataContext = someList; 

un altro modo, assegnare direttamente itemsource

//CODE #2 
//WPF 
<ComboBox name="cmbItems" ItemSource={Binding} /> 
//C# 
cmbItems. ItemSource = someList; 

entrambi servono allo scopo, ma qual è la differenza nello snippet sopra? e che è buono da usare?

+0

possibile duplicato del [Chi ha la risposta migliore per il motivo per cui DataContext e ItemsSource non sono ridondanti?] (http://stackoverflow.com/questions/793340/who-has-the-best-answer-for-why- DataContext-e-ItemsSource-sono-non-ridondante) –

risposta

9

DataContext è usato principalmente sulle forme, controlli ecc

Un ItemSource è un percorso relativo per fare associazione dati su tale DataContext.

Ad esempio, quando si crea un modulo per modificare i dettagli della persona, il DataContext è Person e i diversi controlli sul modulo si legheranno su una proprietà separata su quell'oggetto, ad esempio Nome, Data di nascita, ecc.

2

Nel secondo esempio è possibile tralasciare ItemsSource = {Binding}. Si sta impostando l'elemento ItemsSource direttamente su un valore nel codice sottostante. Non è necessario un collegamento qui. Nel vostro primo esempio, è possibile impostare il DataContext, e utilizzare un vincolante per recuperare nuovamente dal DataContext ..

Ma non importa .. per entrambi i metodi funzionano bene ...

io uso il seguente pollice di regola: mettilo nel codice dietro, se ho la collezione disponibile .. Impostalo in una sorta di modalità di rilegatura, se ho bisogno di trasformare la collezione, in modo da poter usare un IValueConverter per fare il lavoro .. .

Problemi correlati