Редактирование клона объекта модели решит проблему, как вы предложили.
Другой подход заключается в том, чтобы привязки свойств использовали UpdateSourceTrigger из Explicit.После нажатия кнопки «Сохранить» вы будете программно вызывать UpdateSource для каждого выражения привязки.Это требует некоторого дополнительного кода, который будет принадлежать к коду сзади View, так как это код, который управляет элементами пользовательского интерфейса.
Также рассмотрите возможность иметь свойство на вашей виртуальной машине для каждого свойства, представленного в View, где поле поддержкисвойства VM - это , а не соответствующего свойства обернутого объекта Model.Когда пользователь нажимает кнопку Сохранить, вы можете назначить каждое свойство виртуальной машины объекту модели.Естественно, элементы управления в представлении будут привязаны к свойствам виртуальной машины, а не к свойствам модели.Это фактически похоже на клон без дополнительной поддержки клонирования на уровне модели.
Я не утверждаю, что какой-либо из этих вариантов лучше или хуже.Все зависит от контекста, в котором они используются.