【发布时间】:2019-02-06 23:09:49
【问题描述】:
我正在启动一个包含 UserControl 的窗口,并且我想从 UserControl 的 ViewModel 中关闭该窗口。在坚持使用 MVVM 的同时,最好和最干净的方法是什么?
理想情况下,我想在关闭窗口时调用带有 IsCancel 的 Button 调用相同的命令。我没有与取消按钮绑定的代码,它完美地关闭了窗口。
这是我目前正在做的事情......
我使用 MainWindowViewModel 中的 UserControl 启动 Window,然后将 MainWindowViewModel 传递给 UserControl 的 ViewModel,如下所示:
Window window = new Window
{
Title = "Sign In",
Height = 350,
Width = 500,
WindowStartupLocation = WindowStartupLocation.CenterScreen,
WindowStyle = WindowStyle.ToolWindow,
ResizeMode = ResizeMode.NoResize,
Content = new SignIn(mainWindowViewModel: this)
};
window.ShowDialog();
我只是不太确定如何从 UserControl 的 ViewModel 关闭窗口。
【问题讨论】:
-
对此有什么好处吗?如果我下面的回答没有帮助,那么您要详细说明吗?
-
@olitee 我实际上在 MainWindowViewModel 中创建了一个名为 ChildWindow 的属性,并将我启动的窗口设置为该属性。然后,因为我可以从新窗口访问 MainWindowViewModel,所以我可以调用 MainWindowViewModel.ChildWindow.Close() 并关闭任何打开的窗口。