2010-12-18 11 views
2

私はクラスのObservableCollection<T>を持っています。ObservableCollectionの変更された値を復元するにはどうすればよいですか?

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)); 

ここでコレクションのデータを変更します。私は古い値を復元する必要があるシナリオがありますが、コレクションを追加するときにコレクションを最初にクリアすると、古い値が反映されます。例:

年齢は、コレクションではXamDataGridで35から45に変更されました。今私のリストは35の値を持っています。

collectionVAR.clear(); 

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

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

答えて

1

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

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

解決策は、最初にPersonオブジェクトをクローン化し、次にクローンをObservableCollectionに追加することです。

関連する問題