2011-05-18 73 views
0

的區域I具有主要WPF應用程序和其他模塊和我使用PRISM主機在我的殼限定在不同區域中的模塊的圖。這對我來說很好。 我現在有要求將我的主應用程序設置爲類庫並從另一個窗口應用程序中調用它。 這個新窗口應用程序有一個主函數,下面的代碼。PRISM RegionManager不添加殼牌

[System.STAThreadAttribute()] 
    public static void Main() 
    { 
     Application app = new Application(); 
     IStartupUI start = new StartupUI(); 
     start.StartUserInterface();      
     app.Run(); 
    } 

的start.StartUserInterface基本上調用已以下代碼

 ABCBootStrapper bootstrapper = new ABCBootStrapper(); 
    bootstrapper.Run(); 

的同一段代碼較早稱爲OnStartup當DLL本身是主應用程序在DLL中的函數。

現在,通過此更改,Shell不顯示任何視圖。在調試時,我發現RegionManager不能識別Shell中定義的任何區域。基本上在RegionManager中註冊的區域數量爲0. 在shell中定義的所有區域都是ContentControl。

回答

0

我的問題似乎已經被解決做以下:

我做了其中包含的主要功能的類從System.Windows.Application 派生並代替直接創建應用的例子中,我創建的實例的類,我將用於啓動用戶界面的代碼放入OnStartup事件處理程序中。

class Test : System.Windows.Application 
{ 
    [System.STAThreadAttribute()] 
    public static void Main() 
    { 
     Test app = new Test(); 
     app.Startup += new StartupEventHandler(app_Startup); 
     app.Run(); 
    } 

    static void app_Startup(object sender, StartupEventArgs e) 
    { 

     IStartupUI start = new StartupUI(); 
     start.StartUserInterface(); 


    } 
} 
+0

如果你回答了你自己的問題,你應該接受它。 – Jehof 2011-05-20 06:01:47