我正在使用Prism 7创建一个大型WPF桌面应用程序,我需要为Word和Excel创建多个VSTO加载项,它们是较大整体的较小部分。我想使用Prism 7将已经创建的视图和视图模型注入到xaml窗口中,该窗口在单击功能区上的按钮时显示。
虽然我不熟悉VSTO加载项,但我不知道在哪里初始化引导程序。
我已经创建了一个引导程序,该引导程序使用包含必要视图的正确模块来配置模块目录。引导程序如下。
public sealed class Bootstrapper : PrismApplication
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>(); //Where MainWindow is the window that should be shown when the button is clicked.
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
base.ConfigureModuleCatalog(moduleCatalog);
moduleCatalog.AddModule(typeof(MyModule)); //Where MyModule is the Prism module for the project that contains the views I want to inject
}
}
如下所示,当我从ThisAddIn.cs文件初始化引导程序时,引导程序会正确创建自己并配置模块目录。之后,容器能够解析RegionManager,但它也会自动向用户显示MainWindow。
public partial class ThisAddIn
{
private Bootstrapper _bootstrapper;
private void ThisAddIn_Startup(object sender, EventArgs e)
{
_bootstrapper = new Bootstrapper(); //MainWindow is displayed after everything runs
}
}
如果我将MainWindow保持打开状态,然后单击将视图注入MainWindow的按钮,则视图将被正确注入。但是,我显然不想每次用户打开Word文档时都自动显示空白窗口。有什么办法可以阻止Bootstrapper在此时显示MainWindow,还是有更好的方法呢?