c# - Copy ObservableCollection to another ObservableCollection -
how copy observablecollection
item observablecollection
without reference of first collection? here observablecollection
item value changes affecting both collections.
code
private observablecollection<ratemodel> _allmetalrate = new observablecollection<ratemodel>(); private observablecollection<ratemodel> _metalrateondate = new observablecollection<ratemodel>(); public observablecollection<ratemodel> allmetalrate { { return this._allmetalrate; } set { this._allmetalrate = value; notifypropertychanged("metalrate"); } } public observablecollection<ratemodel> metalrateondate { { return this._metalrateondate; } set { this._metalrateondate = value; notifypropertychanged("metalrateondate"); } } foreach (var item in metalrateondate) allmetalrate.add(item);
what causing , how can solve it?
you need clone object referenced item
before it's added allmetalrate
, otherwise both observablecollections
have reference same object. implement icloneable
interface on ratemodel
return new object, , call clone
before call add
:
public class ratemodel : icloneable { ... public object clone() { // create new ratemodel object here, copying across fields // instance. must deep-copy (i.e. clone) arrays or other complex // objects ratemodel contains } }
clone before adding allmetalrate
:
foreach (var item in metalrateondate) { var clone = (ratemodel)item.clone(); allmetalrate.add(clone); }
Comments
Post a Comment