Удалить повтор действий в Memento?
В моем приложении пользователь может добавлять строки в DataGrid и изменять свойства каждой строки. Пользователь также может удалять строки. Это прекрасно работает, чтобы отменить и повторить эти действия, но если пользователь добавляет строки, скажем, три, изменяет некоторые значения, а затем отменяет их, где есть только одна строка, а затем добавляет новую строку, кажется нелогичным иметь возможность отменить отмены (новые строки появляются после последней добавленной). Таким образом, когда пользователь добавляет новую строку, я хочу удалить все повторы.
Я попытался использовать RedoBatches, чтобы получить перечисление всех повторов, а затем выполнить "Очистку" для каждого, чтобы удалить их, но кнопка "Повторить" все еще активна и будет повторять эти действия при нажатии.
Это правильный способ добиться этого, или это невозможно, или я должен сделать это по-другому?
1 ответ
При добавлении элементов с использованием объекта вы можете использовать UnregisterObject для отмены регистрации. Он также автоматически удалит пустые партии.
Другой способ - привести свойства пакетов Undo / Redo к списку List<> и соответствующим образом изменить их (но учтите, что в этом случае вы "возитесь" с внутренними компонентами).