我将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
吗?
答案 0 :(得分:2)
ObservableCollection<T>
不是只读的,而是KeyValuePair<TKey, TValue>
,因为后者是struct
。 struct
s是一个不可改变的好设计实践。
更新集合的正确方法是
comboBoxSelections[i] =
new KeyValuePair<string, double>(comboBoxSelections[i].Key, someDoubleValue);
答案 1 :(得分:1)
嗯,错误信息很明确。 Value
的{{1}}属性是只读的。我无法对问题的第二部分给出详细的答案,但快速的谷歌搜索给出了: