我正在构建支持客户及其购买的应用程序。 每位客户都持有一份购买清单:
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public DateTime DateOfBirth { get; set; }
... //Some more properties...
public List<Purchase> PurchasesList { get; set; }
}
public class Purchase
{
public string ProductName { get; set; }
public int ProductSerialNumber { get; set; }
public DateTime DateOfPurchase { get; set; }
...//Some more properties
}
我有一份顾客名单:
public List<Customer> Customers { get; set; }
在某些时候,我想编辑客户列表及其购买。为此,我将Customers'列表绑定到DialogWindow中的ListView控件(#1)。 当用户双击其中一个客户时,会打开一个新的DialogWindow(#2),允许编辑客户的个人详细信息和 他的购买 - 大多数是允许编辑的文本框,我将它们绑定到客户列表中的客户对象。 当用户按下“确定”按钮时 - 执行绑定(我在所有文本框上选择了UpdateSourceTrigger.Explicit)。
对话框(#2)现已关闭并且发生了更改(我可以在对话框上看到ListView上的更改(#1))。 问题是如果用户按下对话框(#1)上的“取消”按钮,他预计不会发生更改(但实际上来源有 已经更新)。
如何撤消更改?我不想持有客户列表的副本(这可能是一个非常耗费空间的列表)
答案 0 :(得分:0)
有一个名为IEditableObject的界面,它使用起来相当复杂,但它可能会有所帮助,因为它的存在就是为了这个目的:取消编辑。
您可能无法保存列表的副本,除非您记下确切编辑了哪些项目并仅保存其原始状态。