Если вы хотите придерживаться MVVM
и сделать это правильно, в легко расширять и поддерживать, как вы можете сделать это так:
public class FirstViewModel : IWindowCloseNotifier {
public SecondViewModel SecondVm { get; set; }
public FirstViewModel()
{
SecondVm = new SecondViewModel(this);
}
public void Close(IWindowCloseNotifierArgs args)
{
// Window is now closed!
}
}
интерфейс гарантирует, что SecondViewModel
может использовать только Close
метод.
public interface IWindowCloseNotifier {
void Close(IWindowClosedArgs args);
}
public class SecondViewModel {
private readonly IWindowCloseNotifier _windowCloseNotifier;
public SecondViewModel(IWindowCloseNotifier windowCloseNotifier) {
_windowCloseNotifier = windowCloseNotifier;
}
public void OnClose()
{
_windowCloser.Close(your args);
}
}
Если SecondViewModel
не ребенок FirstViewModel
затем использовать Опубликовать Подписка шаблон для обмена данными между ViewModels.
Мои имена не велики, но у меня нет других идей.
Итак, ваше второе окно также имеет viewmodel, не так ли? Итак, у вас есть viewmodel для каждого окна? – FCin
Я этого не делаю. У меня есть только один для моего главного окна, но хотелось бы, чтобы для определенного метода, который находится внутри этой модели просмотра, запускался всякий раз, когда я закрываю второй, так что изменения в моей базе данных, которые были сделаны во втором окне, отражаются в главном окне , – RockGuitarist1
И где вы создаете это окно? Вы создаете его внутри viewmodel? У вас есть ссылка на это окно? Чтобы действительно получить то, что может предложить mvvm, я просто создаю viewmodel для второго окна, а затем привяжу его к событию. В противном случае у вас остался код позади и события – FCin