Wpf 在多个对话框窗口中使用绑定-取消问题

Wpf 在多个对话框窗口中使用绑定-取消问题,wpf,data-binding,Wpf,Data Binding,我正在构建一个支持客户及其购买的应用程序。 每位客户都持有一份购买清单: public class Customer { public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } public DateTime DateOfBirth { get; set; }

我正在构建一个支持客户及其购买的应用程序。 每位客户都持有一份购买清单:

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; }
在某个时候,我想编辑客户列表和他们的购买。为此,我将客户列表绑定到DialogWindow 1中的ListView控件。 当用户双击其中一个客户时,将打开一个新的对话框窗口2,允许编辑客户的个人详细信息和 他的购买——大多数是文本框,允许编辑,我将它们绑定到客户列表中的客户对象。 当用户按下“确定”按钮时-执行绑定,我在所有文本框上选择UpdateSourceTrigger.Explicit

对话框2现在关闭,并且发生了更改。我可以在对话框1的ListView上看到更改。 问题是,如果用户按下对话框1上的“取消”按钮,他希望不会发生更改,但实际上源已发生更改 已经更新了


如何撤消更改?我不想保存客户列表的副本这可能是一个非常占用空间的列表

有一个名为的界面,使用起来非常复杂,但可能会有所帮助,因为它的存在正是为了这个目的:取消编辑

但是,您可能无法保存列表的副本,除非您确切地注意到哪些项目已被编辑并仅存储其原始状态