wpf - MVVM 和多窗口

标签 wpf windows architecture mvvm caliburn.micro

我正处于我想使用 Caliburn.Micro 和 C#/WPF 编写的小型应用程序的预设计阶段。我仍在学习该框架,但我喜欢目前所见。

我打算构建的应用程序是一个进程内存搜索/扫描实用程序,具有 ASM 反汇编和内存浏览功能。这三个问题——搜索/扫描、ASM 反汇编和内存浏览——我希望由三个或更多单独的窗口处理。搜索/扫描部分将包含主应用程序外壳,而其他两个功能(可以同时调用多次)将使用从外壳上的操作调用的单独窗口。

我的问题是:如何从 shell(或其他一些) View 模型中启动新窗口?我知道我必须传递另一种 View 模型以在新窗口中呈现 - 但正是新窗口业务让我感到困惑。

最佳答案

Caliburn.Micro 提供了一个带有 Show 方法的 WindowManager 类型,它可以在新窗口中显示 View 模型,如果该 View 模型实现了适当的 Caliburn.Micro接口(interface),WindowManager 将确保 View 模型经历通常的生命周期(即调用 OnActivateOnDeactivate 等)。如果您的 View 模型派生自 Screen 类型,那么就是这种情况。

WindowManager 实现了 IWindowManager 接口(interface),因此您可以将此抽象作为依赖项注入(inject)您的 ShellViewModel。

如果关联的 View 不是Window,而是UserControl,那么WindowManager 也会包装UserControlWindow 中,以便可以显示它。

关于wpf - MVVM 和多窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195291/

相关文章:

c# - 如何加速 .NET 客户端应用程序(Windows 窗体或 WPF)的初始化?

c - 知道如何在 C 中使用 TUI 制作按钮吗?

c++ - 在 Windows Mobile 中动态分配内存映射文件的大小

c# - 将 Canvas 保存为 SVG

WPF:如何将事件标题栏颜色设置为窗口背景?

c# - 在 directx 11 中渲染 h264 视频帧

java - 如何在微服务架构中重用代码

windows - WIC 位图处理最有效的像素格式是什么?

java - 公开方法的更好方法

oop - 以数据为中心和面向对象的应用程序模型有什么区别?