Я работаю в WPF, используя шаблон MVVM, и в целом все, кажется, работает довольно хорошо, поскольку я оборачиваюсь вокруг нюансов как WPF, так и MVVM. Тем не менее, я в настоящее время застрял на конкретном вопросе. Мое настоящее приложение довольно сложное, поэтому для упрощения давайте возьмем почти определенную статью Джоша Смита о шаблоне и используем приложение в нем.
Рассмотрите рисунок 2 и представьте, что пользователь набрал некоторые вещи в полях имени и фамилии. Затем пользователь полностью уходит из рабочей области (viewmodel), либо щелкая другую вкладку клиента, либо, возможно, совершенно другую модель представления в том же приложении. В этом случае я хотел бы, чтобы приложение спросило: «Эй, ты хотел сохранить свои изменения? Да / Нет / Отмена» и ответило соответствующим образом. Это создало ... проблемы.
Поскольку я хотел бы, чтобы пользователь мог «отменить» этот первый проход, он требует PreviewLostKeyboardFocus (поскольку я мог бы установить Handled = true и отменить сдвиг фокуса). Однако некоторые пользовательские действия (например, нажатие на вкладку в другом рабочем пространстве) не смещают фокус клавиатуры. LostFocus лучше подходит для меня в этом отношении, но это только после того, как фокус уже потерян (хотя, конечно, я мог бы переключить его обратно?), И есть проблемы с определением, было ли событие из самого представления (то есть мы уходим весь вид) или если он просто пузырился от какого-то содержащегося объекта.
И большая картина всего этого - это кажется проблемой для представления, но тогда это подразумевает написание кода в представлении, а не волшебную модель представления. Что заставляет меня думать, что я не смотрю на это правильно.
Так что я надеюсь, что мне не хватает какой-то большой концептуальной а-ха, которая прояснит все это. Помощь