WPF - Comment puis-je mettre en œuvre une ObservableCollection<K,T> avec une clé (comme un Dictionnaire)?
J'ai utilisé une ObservableCollection avec WPF pour la liaison et cela fonctionne bien. Ce que je veux vraiment en ce moment est un Dictionnaire comme un, qui a une clé que je peux utiliser, donc effectivement comme "ObservableCollection".
Pouvez-vous suggérer le code qui peut être utilisé pour fournir une ObservableCollection? L'objectif est de disposer d'un Dictionnaire comme la structure que je peux lier à partir de WPF.
Grâce
OriginalL'auteur Greg | 2010-09-29
Vous devez vous connecter pour publier un commentaire.
Quelqu'un l'a déjà fait. Je n'ai pas essayer encore mais rien à perdre.
OriginalL'auteur ktutnik
Créer une classe qui implémente l'IDictionary, INotifyCollectionChanged & INotifyPropertyChanged interfaces. La classe aurait un exemple de Dictionnaire qui serait utilisé pour la mise en œuvre de IDictionary (l'un des compléments de méthodes est codée ci-dessous à titre d'exemple). Les deux INotifyCollectionChanged et INotifyProperyChanged exiger la présence d'événements, ces événements devraient être mis le feu à des points appropriés dans les fonctions wrapper (encore une fois, consulter la méthode Add ci-dessous pour un exemple)
Edit:
Noter que la mise en œuvre de la IDictionary interface, directement ou indirectement, exigerait que les trois autres interfaces être mises en œuvre:
Selon vos besoins, vous pourriez ne pas avoir à mettre en œuvre l'ensemble de la IDictionary de l'interface, si vous allez seulement d'appeler un couple de méthodes puis il suffit de mettre en œuvre ces méthodes et la IDictionary interface devient un luxe. Vous devez mettre en œuvre la INotifyCollectionChanged et INotifyPropertyChanged interfaces pour la liaison à un travail cependant.Blockquote
Oui, si vos besoins nécessitent de mettre en œuvre l'ensemble de la IDictionary interface, voir mes modifications
OriginalL'auteur Steve Ellinger
public class ObservableDictonary : Dictionnaire, INotifyCollectionChanged, INotifyPropertyChanged
{
événement public NotifyCollectionChangedEventHandler CollectionChanged;
Je ovveride Ajouter, de Supprimer et d'Effacer. Vous devez comprendre, si vous utilisez la méthode d'extension ou de méthode simple, qui prennent Dictonary paramètre, vous ne verrez pas de changement, parce que dans cette situation, d'Ajouter ou de Supprimer la méthode va utiliser des Dictonary (pas ObservableDictonary). Donc, vous devez méthodes directes (Ajouter ou Supprimer) des ObservableDictonary
OriginalL'auteur Smagin Alexey
Que penser de quelque chose comme :
où la chaîne et de l'objet et les types d'échantillons de cours
Vous avez fait un point. Toutefois, l'utilisation d'une collection observable pour de grands ensembles de données est probablement pas une bonne idée.
OriginalL'auteur eka808