Prism 7.将PrismApplication.CreateShell()与非Window控件一起使用

时间:2019-01-23 18:33:11

标签: c# wpf unity-container prism prism-7

我想从6.3更新到7。

我似乎遇到了障碍。

在App.xaml中使用PrismApplication类时,CreateShell期望的是Window的返回类型,而不是以前的需要DependencyObject的BootStrapper。

我的MainShell是经过修改的Telerik RadWindow,其本身是经过修改的System.Windows.Controls.HeaderedContentControl,并且无法转换为Window。

有没有解决的办法,所以我可以使用PrismApplication对象,还是像以前一样回滚并使用BootStrapper?

1 个答案:

答案 0 :(得分:2)

  

我是否必须像以前一样回滚并使用BootStrapper?

引导程序仍然存在。它被标记为已弃用,并且在将来的版本中可能会消失,但是只要它存在,您就可以使用它。 至少,直到解决PrismApplicationBase的问题为止。为此,您应该在github上创建一个问题。

编辑:

问题已经提出,无法解决(1413)。

我将从问题中复制建议的解决方法,以供参考:

protected override Window CreateShell()
{
    return null;
}

protected override void OnInitialized()
{
    var shellWindow = Container.Resolve<ShellWindow>();
    shellWindow.Show();
    MainWindow = shellWindow.ParentOfType<Window>();

    // there lines was not executed because of null Shell - so must duplicate here. Originally called from PrismApplicationBase.Initialize
    RegionManager.SetRegionManager(MainWindow, Container.Resolve<IRegionManager>());
    RegionManager.UpdateRegions();
    InitializeModules();

    base.OnInitialized();
}