ObservableDictionary pour c#
Je suis en train de l'utiliser à la suite de la mise en œuvre de la ObservableDictionary: ObservableDictionary (C#).
Quand je suis en utilisant le code suivant lors de la liaison à un dictionnaire pour un contrôle DataGrid:
ObserveableDictionary<string,string> dd=new ObserveableDictionary<string,string>();
....
dd["aa"]="bb";
....
dd["aa"]="cc";
à dd["aa"]="cc";
je suis arriver exception suivante
Index was out of range. Must be non-negative and less than the size of the
collection. Parameter name: index
Cette exception est levée dans CollectionChanged(this, new NotifyCollectionChangedEventArgs(action, newItem, oldItem)
la méthode suivante:
private void OnCollectionChanged(NotifyCollectionChangedAction action, KeyValuePair<TKey, TValue> newItem, KeyValuePair<TKey, TValue> oldItem)
{
OnPropertyChanged();
if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(action, newItem, oldItem));
}
La index
param semble correspondre à KeyValuePair<TKey, TValue> oldItem
.
Comment peut - KeyValuePair<TKey, TValue>
être hors de portée, et que dois-je faire pour faire ce travail?
OriginalL'auteur Arsen Zahray | 2012-05-16
Vous devez vous connecter pour publier un commentaire.
Structure de données similaires, de se lier à un Dictionnaire de type collection
http://drwpf.com/blog/2007/09/16/can-i-bind-my-itemscontrol-to-a-dictionary/
Il propose une nouvelle structure de Données ObservableDictionary et les feux de PropertyChanged en cas de changement de Dictionnaire sous-jacent.
OriginalL'auteur Tilak
voici ce que j'ai fait à la fin:
Cette mise en œuvre ressemble et se sent comme un dictionnaire de l'utilisateur et comme ObservableCollection à WPF
Nice job!!! Dans
TryGetValue
, si l'instruction doit êtreif (Equals(r, default(ObservableKeyValuePair<TKey, TValue>)))
OriginalL'auteur Arsen Zahray
ObservableDictionary a été ajouté à la .Net Framework à la version 4.5:-
https://zamjad.wordpress.com/2012/10/12/observabledictionary-in-net-4-5/
Voici un lien vers le dernier code source:-
https://referencesource.microsoft.com/#PresentationFramework/src/Framework/MS/Internal/Annotations/ObservableDictionary.cs
OriginalL'auteur The Lonely Coder
Même je suis en utilisant le ObservableDictionary de github, j'ai aussi fait face à cette exception. J'avais déclaré le dictionnaire de la variable au niveau de la classe, plus tard, j'ai essayé de créer une nouvelle instance de la méthode où il était accessible.
OldCode qui a donné exception:
NewCode qui a travaillé:
OriginalL'auteur Rakshith Balasubramanya