Как заставить фокусироваться на втором окне / диалоге в MVVM? - PullRequest
0 голосов
/ 24 ноября 2018

Сейчас я работаю над приложением WPF и сталкиваюсь с ситуацией.

Чтобы упростить задачу, у меня есть главное окно с несколькими элементами UserControl.В какой-то момент у меня открывается другое окно, и я хочу, чтобы это окно было всегда сфокусированным, даже если пользователь пытается нажать на другое.

Я нашел кое-что о методе Window.Activate ().Поэтому я попытался это решение .Но это не работает, как я.Мне нужно, чтобы мое окно было единственным доступным для пользователя, и я не хочу, чтобы он обращался к основному, когда второе не закрыто.

Очевидно, я действительно хочу не сломать MVVM.

Любая подсказка?

1 Ответ

0 голосов
/ 24 ноября 2018

Если вы хотите, чтобы одно окно было единственным, с которым взаимодействует пользователь, тогда используйте .ShowDialog, а не show.Любая реализация манипуляций с окнами является обязанностью просмотра, поэтому поместите код, который сделает это, в один из ваших пользовательских контроллеров или окон.Тогда вам нужен какой-то способ сделать это из вашей модели.Вы можете добавить свойство зависимости в ваше представление и связать его со свойством в модели представления, а затем обработать изменение этого свойства зависимости.Альтернативой может быть использование паттерна pub / sub и мессенджера mvvmlight или связующего объекта, такого как призма eventaggregator.Или любое количество других механизмов моста, которыми вы могли бы поделиться с помощью ресурсов или внедрения зависимостей.

...