MVVM WPF更改窗口并关闭先前的窗口。
MVVM WPF中改变窗口并关闭先前窗口的问题出现的原因是MVVM模式中不允许从ViewModel创建新的View,并且从ViewModel中显示窗口是违反MVVM的。解决方法是使用流行的技术,使用ContentControl和DataTemplate来更改View。
具体的解决方法是在Window中使用ContentPresenter来绑定CurrentView,然后根据Window.DataContext的实例类型来显示不同的View。
下面是一个示例代码,演示了如何使用DataTemplates来实现这个功能。它使用了一个ItemsControl来显示ViewModel的列表,并使用Button来切换View。
如果你想要真正打开一个新的窗口,你应该创建一个中间层来使ViewModel不依赖于具体实现的创建新窗口的方式。这里给出了一个示例代码,其中使用了一个接口IWindowFactory来创建新的窗口。
关于如何关闭窗口,有很多种方法。其中一种方法是使用Application.Current.MainWindow.Close()来关闭主窗口。
但是使用工厂模式创建窗口时可能会遇到关闭先前窗口的问题。如果有任何问题,可以随时提问。