【发布时间】:2013-12-27 12:28:43
【问题描述】:
考虑以下复制/克隆对象的方法(所有字段都复制到新对象中)
public AangepastWerk CloneAdjustedWork(AangepastWerk pAdjustedWork)
{
return new AangepastWerk()
{
AangepastWerkID = pAdjustedWork.AangepastWerkID,
ArbeidsOngeval = pAdjustedWork.ArbeidsOngeval,
DatumCreatie = pAdjustedWork.DatumCreatie,
DatumLaatsteWijziging = pAdjustedWork.DatumLaatsteWijziging,
DatumOngeval = pAdjustedWork.DatumOngeval,
GewijzigdDoor = pAdjustedWork.GewijzigdDoor,
NietErkend = pAdjustedWork.NietErkend,
Stamnummer = pAdjustedWork.Stamnummer,
Verzorging = pAdjustedWork.Verzorging,
VerzorgingId = pAdjustedWork.VerzorgingId
};
}
我有一个表单,它打开一个子表单,其中传递了两个对象(上述类型的同一对象的 2 倍)。我这样打开表格:
//my selected Record
Record rec = DateGridAdjustedWorks.ActiveRecord;
AangepastWerk AWorkObject = (AangepastWerk)((DataRecord)rec).DataItem;
AangepastWerk AWorkObjectBackup = _Vm.CloneAdjustedWork(AWorkObject);
WindowModifyAdjustedWork windowForModify = new WindowModifyAdjustedWork(AWorkObject,AWorkObjectBackup, true);
windowForModify.Closing += new CancelEventHandler(OnModifyAWClosing);
windowForModify.ShowDialog();
在那个子窗体中,我将第一个对象设置为 DataContext。 _adjustedWork 和 _adjustedWorkCopy 是表单的属性
_adjustedWork = pAdjustedWork;
GridAdjustedWork.DataContext = AdjustedWork;
_adjustedWorkCopy = pAdjustedWorkCopy;
问题: 在表单中,我能够在保留原始对象的同时更改对象。用户可以看到原始对象,因此他有可能跟踪更改(用户请求)但是如果我更改了我的 _adjustedWork(我的数据上下文的对象)然后我的 _adjustedWorkCopy (没有对其执行任何操作)在我的代码隐藏中)也被改变了。我问你们聪明的问题是:为什么会发生这种情况,我该如何解决?我在这里缺少什么(可能是一些非常基本的东西)?
【问题讨论】:
标签: c# asp.net .net silverlight