0

ObservableCollectionは次のように定義されています

public ObservableCollection<KeyValuePair<string, double>> comboBoxSelections 
{ 
 get; 
 set; 
}

後で私のコードで、コレクションを繰り返し、一部の値のみを変更する必要がありますが、同じキーを保持します。私は以下を試しました

        for (int i = 0; i < comboBoxSelections.Count ; i++)
        {
            comboBoxSelections[i].Value = SomeDoubleValue;
        }

しかし、これはエラーになりますProperty or indexer 'System.Collections.Generic.KeyValuePair<string,double>.Value' cannot be assigned to -- it is read only

誰かが私がエラーを受け取る理由と更新を許可する方法を説明できますObservableCollectionか?

4

2 に答える 2

2

後者はであるため、ObservableCollection<T>読み取り専用ではなく、です。sが不変であるのは良い設計手法です。KeyValuePair<TKey, TValue>structstruct

コレクションを更新する正しい方法は

comboBoxSelections[i] =
    new KeyValuePair<string, double>(comboBoxSelections[i].Key, someDoubleValue);
于 2012-10-06T20:21:54.543 に答える
1

さて、エラーメッセージは明らかです。のValueプロパティKeyValuePairは読み取り専用です。質問の2番目の部分について詳細な回答をすることはできませんが、すばやくグーグルすると次のようになります。

http://blogs.microsoft.co.il/blogs/shimmy/archive/2010/12/26/observabledictionary-lt-tkey-tvalue-gt-c.aspx

于 2012-10-06T20:14:40.190 に答える