2

私はObservableCollection<T>クラスのを持っています。

class person
{
   string name;
   string age;
}

私も持っていList<T>ます。コレクションに取り込まれた XML タグと XML からのリストからデータを取得しています。

listVAR.add (new person(xml.name.value,xml.age.value));
collectionVAR(new person(xml.name.value,xml.age.value));

ここで、コレクション内のデータを変更します。古い値を復元しなければならないシナリオがありますが、最初にコレクションをクリアして追加すると、古い値が反映されます。例えば:

を介してコレクションの年齢が 35 から 45 に変更されましたXamDataGrid。これで、リストの値は 35 になりました。

collectionVAR.clear();

foreach(people item in listVAR)
{
    collectionVAR.add(item);
}

しかし、ここでは、値 35 が復元されていないことがわかります。誰かが私に理由を説明できますか?

4

1 に答える 1

1

問題は、Personクラスのコピーが 1 つしか存在しないのに、これが 2 つのコレクション (メイン コレクションとObservableCollection) に含まれる可能性があることです。

したがって、コレクションから にアイテムを追加するとObservableCollectionそれらは同じオブジェクトを指します。したがって、オブジェクトを編集すると、両方のコレクションで変更されます。

解決策は、Person最初にオブジェクトのクローンを作成してから、そのクローンを に追加することObservableCollectionです。

于 2010-12-18T15:43:40.710 に答える