在应用程序中管理多个WPF视图

所以我已经看到WPF中存在一个导航服务,用于维护应用程序中的流。 我并不是真正进入后退和前进类型功能的市场。 我只是在按下特定视图上的按钮时寻找切换视图的好方法。 我正在使用MVVM,因此我不确定是否可以让App.xaml.cs包含每个View或ViewModel的副本,并让ViewModel命令调用App.xaml.cs来执行切换。 也许我应该只处理按钮上的Click事件,并做一些this.Close()的味道; NewWindow.Show();.
与WPF中的很多事情一样,这个对我来说并不直观,尽管可能有一些简单的解决方案。

谢谢!


我创建了一个“窗口加载器”类,应用程序类在应用程序启动时实例化。 窗口加载器有一个维护视图模型类型和视图类型关联的字典。 它还有一个方法,它接受视图模型实例,根据视图模型的类型解析视图,即时视图,将视图的数据上下文设置为视图模型,然后显示它。 窗口加载器还会在窗口想要关闭时在视图模型中注册一个事件。

窗口加载器实现一个IWindowLoader接口,并且它的引用保存在每个视图模型中(当窗口加载器实例化一个视图模型时,它将自己分配给视图模型中的公共IWindowLoader属性)。 因此,任何视图模型都可以导致显示任何其他视图模型而不知道视图并且不显示其自身。 此外,窗口加载器可以轻松地进行测试。

当我现在经历同样的过程时,我发现了很多这种基本模式的例子。 我只是结束了自己。


解决这个问题的一个方法是引入负责应用程序工作流程的控制器 。 他们创建,显示和关闭应用程序中的多个视图。

WPF应用程序框架(WAF)项目的示例应用程序中可以看到这种工作原理。

链接地址: http://www.djcxy.com/p/56109.html

上一篇: Managing multiple WPF views in an application

下一篇: Good or bad practice for Dialogs in wpf with MVVM?