Я создаю приложение, которое поддерживает клиентов и их покупки.
Каждый клиент имеет список покупок:
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; }
В какой-то момент я хочу отредактировать список клиентов и их покупки. Для этого я связываю список клиентов с элементом управления ListView в DialogWindow (# 1).
Когда пользователь дважды щелкает по одному из клиентов, открывается новое DialogWindow (# 2), которое позволяет редактировать личные данные клиента и
его покупки - большинство из них являются текстовыми полями, которые позволяют редактировать, и я привязываю их к объекту клиента в списке клиентов.
Когда пользователь нажимает кнопку «ОК» - привязка выполняется (я выбрал UpdateSourceTrigger.Explicit для всех текстовых полей).
Диалог (# 2) теперь закрыт, и изменения произошли (я вижу изменения в ListView on Dialog (# 1)).
Проблема в том, что если пользователь нажимает кнопку «Отмена» в диалоговом окне (# 1), он ожидает, что изменения не будут выполнены (но на самом деле источник
уже обновлено).
Как я могу отменить изменения? Я не хочу хранить копию списка клиентов (это может быть очень много места)