位置とサイズを持つオブジェクトのリストを取得し、それらをキャンバスにプロットする WPF フォームがあります。現在、オブジェクトの位置に加えられたすべての変更を破棄し、フォームが読み込まれたときに取得された元のコレクションに戻る元に戻すボタンを実装しようとしています。
現時点では、フォームのロード時にデータベースにアクセスし、表示する必要があるすべてのオブジェクトを取得してから、返されたリストを 2 つの個別のコレクションに割り当てます。発生する問題は、2 つのコレクションが実際には元のコレクションへのポインターであり、一方が変更されるたびに、変更が 2 番目のコレクションに反映されることです。
オブジェクトのリストをコピーして、1 つのコレクションに加えられた変更がセカンダリ コレクションに影響しないようにすることはできますか?
これまでのところ、単純に代入演算子を使用して、ソース コレクションを関数に渡し、byval
リストの各要素をスクロールして 2 番目のコレクションに手動で追加し、linq を使用して元のリストからすべてのオブジェクトを取得し、結果をプッシュしようとしました。別の一時リストに追加し、2 番目のコレクションを一時リストに割り当てます。
問題を複雑にしすぎているように感じますが、グーグルで出会ったほとんどすべての場所で、この動作は設計によるものであると言われており、これは理解していますが、これはかなり一般的な考えのようです。