C# 在WPF/PRISM中重新初始化应用程序

C# 在WPF/PRISM中重新初始化应用程序,c#,wpf,mvvm,prism,mef,C#,Wpf,Mvvm,Prism,Mef,我们正在使用PRISM和MEF构建WPF应用程序。在应用程序中,用户将首先浏览包含大量元数据的“项目文件” 基于项目元数据,将创建一组视图及其相关视图模型,用户可以查看/创建/操作项目数据 然后,用户可以打开另一个项目文件,此时该文件应完全重新初始化应用程序,就好像用户重新启动了应用程序,并且这是第一个打开的项目文件一样。原因是不同的项目文件可能会导致创建非常不同的视图 如何在WPF/PRISM/MEF中实现这一点?如果它是一个常规的WinForms应用程序,如果您愿意,我们可以解构/拆除基本的

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

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

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

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


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

如何在当前引导程序上实例化一个新的引导程序并重新运行它,在启动时的应用程序中?我对它进行了测试,它似乎很有效,但在您的情况下,这就足够了吗?

谢谢,我们会试试这个。主要关注的是,如果用户打开多个项目,则能够完全拆除已实例化的对象以避免内存泄漏。就我对引导程序的理解而言,重新初始化它将重新初始化已在容器中注册的任何对象。如果容器外有其他对象,它将不起作用,但我不确定这应该发生在Prism中。