我正处于我想使用 Caliburn.Micro 和 C#/WPF 编写的小型应用程序的预设计阶段。我仍在学习该框架,但我喜欢目前所见。
我打算构建的应用程序是一个进程内存搜索/扫描实用程序,具有 ASM 反汇编和内存浏览功能。这三个问题——搜索/扫描、ASM 反汇编和内存浏览——我希望由三个或更多单独的窗口处理。搜索/扫描部分将包含主应用程序外壳,而其他两个功能(可以同时调用多次)将使用从外壳上的操作调用的单独窗口。
我的问题是:如何从 shell(或其他一些) View 模型中启动新窗口?我知道我必须传递另一种 View 模型以在新窗口中呈现 - 但正是新窗口业务让我感到困惑。
最佳答案
Caliburn.Micro 提供了一个带有 Show
方法的 WindowManager
类型,它可以在新窗口中显示 View 模型,如果该 View 模型实现了适当的 Caliburn.Micro接口(interface),WindowManager
将确保 View 模型经历通常的生命周期(即调用 OnActivate
、OnDeactivate
等)。如果您的 View 模型派生自 Screen
类型,那么就是这种情况。
WindowManager
实现了 IWindowManager
接口(interface),因此您可以将此抽象作为依赖项注入(inject)您的 ShellViewModel。
如果关联的 View 不是Window
,而是UserControl
,那么WindowManager
也会包装UserControl
在 Window
中,以便可以显示它。
关于wpf - MVVM 和多窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195291/