Prism V2:在WPF / WinForm应用程序中托管Shell

时间:2009-10-30 09:37:48

标签: prism

我正在尝试在WPF Composite应用程序中将Shell作为UserControl。我开始修改Quickstart应用程序:“Quickstarts \ UI Composition \ ViewDiscovery”。我使用Shell.xaml作为UserControl创建了一个UserControl类库“UIComposition.Desktop.csproj”。创建了另一个WPFApplication来托管Shell。在App.xaml.cs中添加了以下代码:

protected override void OnStartup(StartupEventArgs e)
{
     base.OnStartup(e);
     Bootstrapper bootStrapper = new Bootstrapper();
     bootStrapper.Run();

     // Get ShellContainer from IOC 
     IUnityContainer container = bootStrapper.Container;
     var shellElement = container.Resolve<Shell>();
     ShellContainer win = new ShellContainer();

     // Add the ShellContainer UserControl to the main window 
     win.mygrid.Children.Add(shellElement);
     win.Show();
}

表单显示shell,但是当我点击员工时,它不会显示详细信息视图。请帮忙!!!如果有人试过这个。

谢谢&amp;问候, 维沙尔。

1 个答案:

答案 0 :(得分:0)

您可以尝试重写UnityBootstrapper的CreateShell方法,而不是使用此OnStartup方法。我不是100%这是你的问题,但这是值得尝试的。

您的OnStartup方法将是:

protected override void OnStartup(StartupEventArgs e)
{
     base.OnStartup(e);
     Bootstrapper bootStrapper = new Bootstrapper();
     bootStrapper.Run();
}

这是CreateContainer方法:

protected override DependencyObject CreateShell()
{
     var shellElement = Container.Resolve<Shell>();
     var shellContainer = new ShellContainer();

     shellContainer.mygrid.Children.Add(shellElement);
     shellContainer.Show();

     return shellContainer;

}

这只是在黑暗中拍摄的。我真的不知道问题是什么,但100%启动方法解决方案对我来说似乎不对。