如何将WPF视图注入到VSTO加载项Prism 7中调用的窗口中

时间:2019-01-11 17:21:52

标签: c# bootstrapper prism-7 view-injection

我正在使用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,还是有更好的方法呢?

0 个答案:

没有答案