У меня есть представление, которое содержит список элементов, TextBox
и кнопку Сохранить.TextBox
привязан к свойству выбранного в данный момент элемента списка.DataSource
списка привязано к ObservableCollection<T>
в ViewModel.
Теперь, когда пользователь выбирает другой элемент в списке и не сохраняет свои изменения в TextBox
, его должны спросить,или нет, он хочет отказаться от изменений, которые он сделал.Выбранный элемент в списке должен быть изменен только в том случае, если он ответит «да».
Проблема, с которой я столкнулся, заключается в следующем:
Мне нужно реализовать проверку на изменения в ViewModel, но я не знаю, где,поскольку ViewModel не получает уведомление, когда выбранный элемент изменяется.
Я предложил следующий метод, но он не выглядит чистым:
В списке есть событие SelectedItemsChanging
.Я мог бы использовать поведение EventToCommand
и передать команду CancelEventArgs
в качестве параметра.В команде я проверяю, был ли изменен элемент, и если это так, я мог бы использовать мессенджер для отправки сообщения, которое прослушивает View.Вид затем покажет пользователю диалог подтверждения и вернет результат обратно в ViewModel каким-то образом .ViewModel, в свою очередь, устанавливает свойство Cancel
аргументов события на true
, если пользователь не хочет отбрасывать свои изменения.
Мне это не кажется чистым, потому что он разрывает эту простую функциональность иразмазывает его по трем файлам, что делает его очень трудным для понимания.
Есть ли рекомендации для такого сценария?