【问题标题】:Re-initializing application in WPF / PRISM在 WPF / PRISM 中重新初始化应用程序
【发布时间】:2013-04-24 22:43:33
【问题描述】:

我们正在使用 PRISM 和 MEF 构建 WPF 应用程序。在应用程序中,用户将首先浏览包含大量元数据的“项目文件”。

基于项目元数据,将创建一组视图及其依赖的视图模型,用户可以查看/创建/操作项目数据。

然后用户可以打开另一个项目文件,此时应该完全重新初始化应用程序,就像用户重新启动应用程序一样,这是第一个打开的项目文件。原因是不同的项目文件可能会导致创建非常不同的视图。

如何在 WPF / PRISM / MEF 中做到这一点?如果它是一个常规的 WinForms 应用程序,我们可以解构/拆除基本的“应用程序表单”,并通过实例化一个新的应用程序重新开始,使用项目元数据作为上下文。

有没有办法在 WPF/PRISM/MEF 中做类似的事情?不同类型项目之间的行为和所需的初始化对于“哦,只需换出模型并让视图模型触发属性更改事件以使视图刷新自己”的方法来说太复杂了。

【问题讨论】:

    标签: c# wpf mvvm prism mef


    【解决方案1】:

    您如何在您的 Application OnStartUp 中实例化一个新的 Bootstrapper 并重新运行它?我测试了它,它似乎可以工作,但在你的情况下就足够了吗?

    【讨论】:

    • 谢谢,我们会试试这个。主要关心的是能够完全拆除已经实例化的对象,以避免在用户打开多个项目时发生内存泄漏。
    • 就我对引导程序的理解而言,重新初始化它将重新初始化已在容器中注册的任何对象。如果您在容器外有其他对象,它将不起作用,但我不确定这是否应该在 Prism 中发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多