2009-04-29 7 views
5

en double de:différence betwwen datacontext et ItemSource dans WPF

Why are DataContext and ItemsSource not redundant?


Dans WPF, nous pouvons attribuer la liste de l'élément à ComboBox de 2 façons

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

//C# 
cmbItems.DataContext = someList; 

une autre façon, assignez directement source d'articles

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

à la fois sert le but, mais quelle est la différence dans l'extrait ci-dessus? et qui est bon à utiliser?

+0

duplicata possible de [Qui a la meilleure réponse pour pourquoi DataContext et ItemsSource ne sont pas redondants?] (Http://stackoverflow.com/questions/793340/who-has-the-best-answer-for-why- datacontext-and-itemssource-are-not-redundant) –

Répondre

9

DataContext est principalement utilisé sur les formes, les contrôles, etc.

Un ItemSource est un chemin relatif à faire sur cette liaison de données DataContext. Par exemple, lorsque vous créez un formulaire pour modifier les détails de la personne, le DataContext est Person et les différents contrôles du formulaire se lient chacun sur une propriété séparée de cet objet, par exemple Name, Date de naissance, etc.

2

Dans le second exemple, vous pouvez omettre ItemsSource = {Binding}. Vous définissez le ItemsSource directement à une valeur dans votre code derrière .. Vous n'aurez pas besoin d'une liaison ici. Dans votre premier exemple, vous définissez le DataContext, et d'utiliser une liaison pour le récupérer à nouveau de la DataContext ..

Mais il ne compte pas vraiment .. pour les deux méthodes fonctionnent très bien ...

J'utilise le pouce suivant de règle: le mettre dans le code derrière, si j'ai la collection disponible. Réglez-le dans une sorte de mode de liaison, si je dois transformer la collection, de sorte que je puisse utiliser un IValueConverter pour faire le travail.

Questions connexes