Использование привязки в нескольких DialogWindows - проблема отмены - PullRequest
0 голосов
/ 11 февраля 2011

Я создаю приложение, которое поддерживает клиентов и их покупки. Каждый клиент имеет список покупок:

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), он ожидает, что изменения не будут выполнены (но на самом деле источник уже обновлено).

Как я могу отменить изменения? Я не хочу хранить копию списка клиентов (это может быть очень много места)

1 Ответ

0 голосов
/ 11 февраля 2011

Существует интерфейс под названием IEditableObject , его довольно сложно использовать, но он может быть полезен, поскольку он существует именно для этой цели: отмена изменений.

Возможно, вы не сможете обойтисохраняя копию списка, если вы не заметите, какие именно элементы были отредактированы, и просто сохраните их исходное состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...