2011-02-11 3 views
0

고객과 구매 항목을 지원하는 애플리케이션을 구축 중입니다. 각 고객은 구매 목록을 원하는 분야여러 DialogWindows 내에서 바인딩 사용 - 취소 문제

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 컨트롤에 Customers '목록을 바인딩합니다. 사용자가 고객 중 한 명을 두 번 클릭하면 고객의 개인 정보를 편집 할 수있는 새로운 DialogWindow (# 2)가 열리 며 그 중 대부분은 편집을 허용하는 텍스트 상자이며 그 내에서 고객 개체에 바인딩됩니다 고객의 목록 사용자가 '확인'버튼을 누르면 바인딩이 수행됩니다 (모든 텍스트 상자에서 UpdateSourceTrigger.Explicit를 선택했습니다).

대화 상자 (# 2)가 닫히고 변경 사항이 발생했습니다 (대화 상자 (# 1)의 ListView에서 변경 내용을 볼 수 있음). 문제는 사용자가 대화 상자 (# 1)에서 '취소'버튼을 누르면 변경 사항이 발생하지 않을 것으로 예상됩니다 (실제로 소스에 이 이미 업데이트 되었음).

변경 사항을 어떻게 취소 할 수 있습니까? 나는 고객 목록의 사본을 갖고 싶지 않다. (이것은 매우 공간이 많이 소모되는 목록 일 것이다.)

답변

0

IEditableObject이라는 인터페이스가 있는데, 사용하기가 상당히 복잡하지만 도움이 될 수있다. 그 정확한 목적 : 편집을 취소합니다.

편집 된 항목을 정확히 기록하지 않고 원래 상태 만 저장하지 않으면 목록 사본을 저장하지 못할 수도 있습니다.