Я создаю большое настольное приложение WPF с использованием Prism 7, и мне нужно создать несколько надстроек VSTO для Word и Excel, которые являются небольшими частями большего целого. Я хочу использовать Prism 7, чтобы внедрить мои уже созданные виды и модели представления в окно xaml, которое отображается при нажатии кнопки на ленте.
Я не знаю, где инициализировать загрузчик, поскольку я не знаком с надстройками VSTO.
Я уже создал загрузчик, который настраивает каталог модулей с правильными модулями, которые содержат необходимые представления. Bootstrapper выглядит следующим образом.
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, но он также автоматически отображает главное окно пользователю.
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 в этот момент или есть лучший способ сделать это?