wpf - 在应用程序中管理多个 WPF View

标签 wpf mvvm

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

谢谢!

最佳答案

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

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

当我经历与现在相同的过程时,我发现了许多相同基本模式的示例。我刚刚结束了自己的滚动。

关于wpf - 在应用程序中管理多个 WPF View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1828043/

相关文章:

c# - 具有值数据绑定(bind)的 WPF ProgressBar

c# - 如何将生成的网格添加到另一个生成的 child ?

c# - 如何控制作为绑定(bind)源的TextBox文本何时更新目标值?

c# - 通过更改窗口模板,所有控件都消失了

android - Rx Java - 只有创建 View 层次结构的原始线程

sql-server - 设置为Null但不设置为0-int

c# - 在 WPF 应用程序中以编程方式设置文本框的颜色

mvvm - 从数据绑定(bind)属性 setter 中调用异步方法的正确方法?

mvvm - JavaFX Model View ViewModel 我应该在哪里实现任务?

c# - 我的命令绑定(bind)不起作用 - MVVM/DataTemplate