Итак, у меня есть ViewModel, который содержит логику для выбора человека из списка, и если человек, который нужно выбрать, отсутствует в списке, элемент списка, чтобы открыть новый диалог для создания указанного человека.
Моя проблема: как я могу создать человека в дочерней модели представления и получить его в родительской. Я искал (много) и ничего удовлетворительного не нашел. Насколько мне известно, есть по крайней мере три возможности: 1. Используйте CMs EventAggregator для отправки сообщений родительскому (и всем остальным, кто его слушает) 2. Используйте свойство на дочерней виртуальной машине и получите доступ к нему после того, как WindowManger закроет диалог. 3. Реализуйте IResult.
Я уже сделал первый, но это (как уже говорилось) неудовлетворительно. Я не хочу, чтобы каждый получил результат только потому, что он слушает EventAggregator. Второй (на мой взгляд) не очень похож на MVVM (или нет?), Поскольку я не могу его контролировать, если он асинхронный. Насколько я могу судить из документа CM, третий вариант является предпочтительным. Однако я не нашел объяснения, как адаптировать его к моему решению. Мне нужно получить ввод пользователя, а это невозможно в методе Execute(CoroutineExecutionContext context)
.
Я что-то упускаю из виду или второй метод действительно лучший способ добиться этого?