gpt4 book ai didi

c# - 将 ObservableCollection 复制到另一个 ObservableCollection

转载 作者:行者123 更新时间:2023-12-03 10:20:11 26 4
gpt4 key购买 nike

如何复制ObservableCollection项目到另一个 ObservableCollection没有引用第一个集合?这里ObservableCollection影响两个集合的项目值更改。

代码

private ObservableCollection<RateModel> _AllMetalRate = new ObservableCollection<RateModel>();
private ObservableCollection<RateModel> _MetalRateOnDate = new ObservableCollection<RateModel>();

public ObservableCollection<RateModel> AllMetalRate
{
get { return this._AllMetalRate; }
set
{
this._AllMetalRate = value;
NotifyPropertyChanged("MetalRate");
}
}

public ObservableCollection<RateModel> MetalRateOnDate
{
get { return this._MetalRateOnDate; }
set
{
this._MetalRateOnDate = value;
NotifyPropertyChanged("MetalRateOnDate");
}
}

foreach (var item in MetalRateOnDate)
AllMetalRate.Add(item);

是什么原因造成的,我该如何解决?

最佳答案

您需要克隆 item 引用的对象在添加到 AllMetalRate 之前, 否则都是 ObservableCollections将引用同一个对象。实现 ICloneable RateModel上的界面返回一个新对象,并调用 Clone在您调用 Add 之前:

public class RateModel : ICloneable
{

...

public object Clone()
{
// Create a new RateModel object here, copying across all the fields from this
// instance. You must deep-copy (i.e. also clone) any arrays or other complex
// objects that RateModel contains
}

}

在添加到 AllMetalRate 之前进行克隆:
foreach (var item in MetalRateOnDate)
{
var clone = (RateModel)item.Clone();
AllMetalRate.Add(clone);
}

关于c# - 将 ObservableCollection 复制到另一个 ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com