引导程序中的自定义窗口作为默认窗口

时间:2012-11-19 10:34:27

标签: wpf prism

将自定义RibbonWindow设置为默认shell窗口的过程应该是什么。 我们从模块中获取此窗口。我们注册并初始化了。

    protected override DependencyObject CreateShell()
    {
        return new xamRibbonWindow() as DependencyObject;
    }


    protected override void InitializeShell()
    {
        base.InitializeShell();
        App.Current.MainWindow = (xamRibbonWindow)Shell;
        App.Current.MainWindow.Show();
    }

1 个答案:

答案 0 :(得分:0)

虽然从模块中获取Shell有点不寻常,但您可以按照通常的方式完成它。您使用依赖注入容器吗?我假设你是:

protected override System.Windows.DependencyObject CreateShell()
{
    return ServiceLocator.Current.GetInstance<Shell>();
}

您可以将您的XamRibbonWindow类替换为Shell。这样,您不需要直接引用包含shell的项目。如果你希望能够根据加载的模块解析多个shell,我会创建一个XamRibbonWindow实现的接口IShell,并在容器中注册该类型。

编辑: 关于你的评论,我会让模块加载并初始化解析IRegionManager并调用你所在地区的.Add。或者如果您使用导航界面,则让shell调用NavigateTo

您使用的是View Discovery还是View Injection? (您可能需要查看有关UI组成的Prism书籍)另外,使用MEF,Unity?