我有一个主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。
答案 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();
}
}