PRISM RegionManager不添加Shell的区域

时间:2011-05-18 13:52:23

标签: wpf prism

我有一个主WPF应用程序和其他模块,我使用PRISM来托管我的Shell中定义的不同区域中的模块视图。这对我来说很好。 我现在需要将我的主应用程序设置为类库并从另一个Window应用程序调用它。 这个新的Window应用程序有一个Main函数,代码如下。

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

start.StartUserInterface基本上调用dll中具有以下代码

的函数
     ABCBootStrapper bootstrapper = new ABCBootStrapper ();
     bootstrapper.Run();

当Dll本身是主要应用程序时,之前在OnStartup中调用了同一段代码。

现在,通过此更改,Shell不会显示任何视图。在调试时,我发现RegionManager无法识别Shell中定义的任何区域。基本上用RegionManager注册的区域数是0。 shell中定义的所有区域都是ContentControl。

1 个答案:

答案 0 :(得分:0)

我的问题似乎已通过以下方式解决:

我创建了包含Main函数的类派生自System.Windows.Application 而不是直接创建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();


    }
}