【问题标题】:MVVM and multiple windowsMVVM 和多个窗口
【发布时间】:2011-03-04 14:54:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: wpf windows architecture mvvm caliburn.micro


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,太棒了。 =) 非常感谢 - WindowManager。谁想到的? =P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多