我有一个按钮,我将这个按钮绑定到ViewModel中的一个命令,例如OpenWindowCommand
。当我点击按钮时,我想要打开一个新窗口。但是从ViewModel中创建窗口实例并显示窗口违反了MVVM。我已经创建了接口,如下:
interface IWindowService
{
void showWindow(object dataContext);
}
并且WindowService
实现了这个接口,就像这样
class WindowService : IWindowService
{
public void showWindow(object dataContext)
{
ChildWindow window=new ChildWindow();
window.DataContext=dataContext;
window.Show();
}
}
在这个类中,我已经指定了ChildWindow
。因此,这个类与显示ChildWindow
紧密耦合。当我想要显示另一个窗口时,我必须实现另一个具有相同接口和逻辑的类。如何使这个类通用化,以便我只需传递任何窗口的实例,该类就能打开任何窗口?
我没有使用任何内置的MVVM框架。我已经阅读了许多StackOverflow上的文章,但是我没有找到任何解决方案。