2013-04-24 67 views
0

我們正在使用PRISM和MEF構建WPF應用程序。在應用程序中,用戶將首先瀏覽到包含大量元數據的「項目文件」。在WPF/PRISM中重新初始化應用程序

基於項目元數據,將創建一組視圖及其相關視圖模型,並且用戶可以查看/創建/操作項目數據。

然後用戶可以打開另一個項目文件,該文件應該在此時完全重新初始化應用程序,就好像用戶已經重新啓動應用程序一樣,這是打開的第一個項目文件。原因是不同的項目文件可能會導致創建非常不同的視圖。

這怎麼能在WPF/PRISM/MEF中完成?如果它是一個常規的WinForms應用程序,我們可以解構/拆除基本的「應用程序表單」,如果你願意,並且通過實例化一個新的應用程序表單,使用項目元數據作爲上下文。

有沒有辦法在WPF/PRISM/MEF中做類似的事情?不同類型的項目之間的行爲和所需的初始化過於複雜,因爲'哦,只需更換模型並讓視圖模型爲視圖啓動屬性更改事件以自我刷新'方法。

回答

0

你如何在當前實例化一個新的Bootstrapper並重新運行它,在你的Application OnStartUp?我測試了它,它似乎工作,但對你的情況是否足夠?

+0

謝謝,我們會試試這個。主要關心的是如果用戶打開多個項目,能夠完全拆除已經實例化的對象以避免內存泄漏。 – user469104 2013-04-25 13:59:50

+0

就我對引導程序的理解而言,重新初始化它將重新初始化已向容器註冊的任何對象。如果你在容器外有其他物體,它將不起作用,但我不確定這應該發生在Prism中。 – Arhiman 2013-04-26 09:54:21