我有一个静态的WindowService
类,可以帮助我创建新的窗口和模态对话框。
到目前为止,我的代码如下:
/// <summary>
/// Opens a new window of type <paramref name="newWindowType"/> and closes the <paramref name="oldWindow"/>
/// </summary>
/// <param name="oldWindow">The window which should be closed (Usually the current open window)</param>
/// <param name="newWindowType">The type of the new window to open</param>
public static void ShowNewWindow(Window oldWindow, Type newWindowType)
{
((Window)Activator.CreateInstance(newWindowType)).Show();
oldWindow.Close();
}
我的viewmodel会触发一个事件,而视图会订阅它。在视图中的事件处理程序中,它会调用
WindowService.ShowNewWindow(this,The type here)
。这个方法运行良好。我的模态对话框创建方法也会以类似的方式工作。唯一的区别是信息将返回到视图(在事件处理程序中),所以视图必须显式地将该信息传递给view model。这违反了MVVM模式,我不知道如何使viewmodel在事件触发后等待视图返回值。
有没有更好的方法来解决这个问题?
唯一的区别是信息将返回到视图(在事件处理程序中),因此视图必须明确地通过代码将该信息传递给视图模型
。为什么会这样呢? - netaholic