将自定义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();
}
答案 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?