Как насчет того, чтобы сделать редактируемый элемент копией элемента вместо фактического элемента?
Так что ваша ViewModel будет содержать
ObservableCollection<MyModel> ComboBoxItems;
int SelectedComboBoxIndex;
MyModel EditingItem;
Всякий раз, когда событие PropertyChange
происходит на SelectedComboBoxIndex
, вы проверяете и видите, является ли EditingItem
нулевым или нет. Если это null
, это означает, что вы можете безопасно переключаться, и вы установили
EditingItem = ComboBoxItem[SelectedComboBoxIndex]).Copy();
Если EditingItem
не равно нулю, вы выдает запрос, спрашивающий, хочет ли пользователь сохранить изменения или отменить.
Когда пользователь нажимает кнопку Сохранить, он принимает EditingItem
и применяет изменения к хранилищу данных и обновляет элемент в списке ComboBoxItems
.
Если они нажимают кнопку Отмена, EditingItem
просто отбрасывается.