3

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

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

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

4

1 回答 1

3

Caliburn.Micro 为WindowManager类型提供了Show一种可以在新窗口中显示视图模型的方法,如果该视图模型实现了适当的 Caliburn.Micro 接口,WindowManager则将确保视图模型经过通常的生命周期(即它调用OnActivate, OnDeactivateETC)。如果您的视图模型从Screen类型派生,那么就是这种情况。

WindowManager实现IWindowManager接口,因此您可以将此抽象作为依赖项注入到您的 ShellViewModel 中。

如果关联的视图不是 a Window,而是 a UserControl,那么 theWindowManager也会将 a 包裹UserControl在 a 中Window以便显示。

于 2011-03-04T15:15:26.973 回答