У меня была такая же проблема несколько дней назад; -)
Наконец, я использовал посредник для связи обеих моделей представления. На самом деле я использовал Messenger от MVVM Light.
public void Search(object parameter)
{
ChildWindow window = new ChildWindow();
SearchWindow pageSearch = new SearchWindow();
window.Content = pageSearch;
window.Show();
Messenger.Default.Register<Messages.CloseWindowMessage>(this, action => this.closeWindow(action));
}
После этого я определил Сообщение всем, что мне нужно было узнать из главного окна:
public class CloseWindowMessage : MessageBase
{
public bool Result { get; set; }
public Model.Selected Selected { get; set; }
}
Наконец, сообщение обратно из дочернего окна, вам нужно только зарегистрировать сообщение с результатом и объектом, который вы хотите вернуть.
Чтобы закрыть окно, вам необходимо зарегистрироваться из выделенного кода вашего представления.