在多个DialogWindows中使用绑定 - 取消问题

时间:2011-02-11 19:13:45

标签: 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; }

    ... //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)上的“取消”按钮,他预计不会发生更改(但实际上来源有 已经更新)。

如何撤消更改?我不想持有客户列表的副本(这可能是一个非常耗费空间的列表)

1 个答案:

答案 0 :(得分:0)

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

您可能无法保存列表的副本,除非您记下确切编辑了哪些项目并仅保存其原始状态。