2011-02-11 55 views
0

我正在構建支持客戶及其購買的應用程序。 每個客戶端購買的清單:在多個對話窗口中使用綁定 - 取消問題

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控件。 當用戶雙擊其中一個客戶時,會打開一個新的DialogWindow(#2),允許編輯客戶的個人詳細信息併購買其中的大部分 - 其中大部分是允許編輯的文本框,並將其綁定到客戶對象內顧客的名單。 當用戶按下'OK'按鈕時 - 執行綁定(我在所有文本框上選擇UpdateSourceTrigger.Explicit)。

對話框(#2)現在已關閉並且發生了更改(我可以看到對話框(#1)上的ListView上的更改)。 問題是如果用戶按下對話框(#1)上的「取消」按鈕,他預計不會發生更改(但實際上源已有 已被更新)。

如何撤消更改?我不想保留客戶名單副本(這可能是一個非常耗費空間的列表)

回答

0

有一個名爲IEditableObject的接口,它使用起來相當複雜,但它可能會有所幫助,因爲它存在於確切目的:取消編輯。

除非您確切記下哪些項目已被編輯並只保存其原始狀態,否則您可能無法保存列表副本。