У меня была та же проблема за несколько дней до: -)
Наконец, я использовал медиатор для обмена обеими представлениями. По факту я использовал 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; }
}
Наконец, сообщение назад из childwindow вам нужно только зарегистрировать сообщение с результатом и объектом, который вы хотите вернуть.
Вам нужно зарегистрироваться из кода вашего представления, чтобы закрыть окно.