Je ne suis pas tout à fait la différence entre ItemsSource et DataContext. Quelqu'un peut-il l'expliquer et le soutenir avec des exemples? Quand devrais-je utiliser l'un ou l'autre. Je lis les docs et dit que je peux lier en utilisant DataContext, mais je lui lance une ObservableCollection et rien n'apparaît dans la liste. Si je lance la même collection à ItemsSource, cela fonctionne très bien.Différence entre ItemsSource et DataContext en ce qui concerne ListBox
Répondre
Les contrôles (y compris le contrôle ListBox) ne font rien du tout avec la valeur de DataContext
. Son but est de fournir un contexte pour les données liaisons. Supposons que vous avez un ListBox
"myList" et un MyData
"myData". Le type MyData
a une propriété "Personnes" de type ObservableCollection<Person>
et le type Person
a les propriétés de chaîne "Prénom" et "Nom".
Toutes les mesures suivantes sont équivalentes: -
myList.ItemsSource = myData.People;
ou
myList.DataContext = myData;
myList.SetBinding(ItemsControl.ItemsSourceProperty, new Binding("People"));
ou
myList.DataContext = myData.People;
myList.SetBinding(ItemsControl.ItemsSourceProperty, new Binding());
Typiquement, si les liaisons sont configurés en Xaml et le DataContext du LayoutRoot est affectée l'objet de données: -
LayoutRoot.DataContext = myData;
vous pourriez avoir le XAML suivant: -
<Grid x:Name="LayoutRoot">
<ListBox x:Name="myList" ItemsSource="{Binding People}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Forename}" Margin="2" />
<TextBlock Text="{Binding Surname}" Margin="2" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Vous remarquerez deux choses ici. Le DataContext
de "myList" n'est pas affecté du tout. Dans ce cas, l'arborescence des ancres du contrôle est parcourue jusqu'à ce qu'un ancêtre ayant une valeur affectée à la propriété DataContext
soit détecté.
De plus, chaque ListBoxItem
généré dynamiquement pour chaque instance a Person
que Person
instance affecté en tant que son DataContext
qui est de savoir comment les liaisons prénom et le nom parviennent à travailler.
- 1. En ce qui concerne ADO.Net
- 2. WPF DataContext vs ItemsSource Performance
- 3. Différence entre la méthode Convert.ToString et Object.ToString() en ce qui concerne la globalisation
- 4. WPF ListBox Binding ItemsSource
- 5. En ce qui concerne BigDecimal
- 6. En ce qui concerne gridview
- 7. En ce qui concerne BigDecimal
- 8. En ce qui concerne ADO.Net
- 9. En ce qui concerne java.math.BigInteger
- 10. En ce qui concerne stdio.h
- 11. ListBox ItemTempate DataContext
- 12. En ce qui concerne: PKCS7, X509 et DER
- 13. En ce qui concerne la syntaxe en C# et vb
- 14. en ce qui concerne la différence entre le serveur sharepoint et le serveur biz talk.qui est bon d'apprendre
- 15. Listbox ItemsSource et DataContext ne sont pas liés dans Silverlight 3
- 16. Relation entre UIView et UIImageView en ce qui concerne les animations ... iPhone SDK
- 17. Quelle est la pratique courante en ce qui concerne la différenciation entre l'UTC et l'heure GMT?
- 18. En ce qui concerne l'eclipse galileo
- 19. En ce qui concerne le téléchargement ePub?
- 20. En ce qui concerne l'objet Excel
- 21. En ce qui concerne Scroll Voir
- 22. En ce qui concerne PHP CURL
- 23. SQL Syntaxe en ce qui concerne SELECT
- 24. En ce qui concerne les extstrings
- 25. En ce qui concerne script shell Unix
- 26. En ce qui concerne Oracle Erreur
- 27. En ce qui concerne le double dataype
- 28. En ce qui concerne la liste déroulante
- 29. en ce qui concerne l'édition d'image
- 30. En ce qui concerne la substitution sql
Merci beaucoup. C'est la première explication compréhensible que j'ai trouvée. – AngryHacker
@AnthonyWJones Merde bonne réponse monsieur –