如何在 Prism 中不打开 MainWindow 的情况下创建模块目录和 Reigster 类型
Posted
技术标签:
【中文标题】如何在 Prism 中不打开 MainWindow 的情况下创建模块目录和 Reigster 类型【英文标题】:How to create Module Catalog and Reigster Types without opening the MainWindow in Prism 【发布时间】:2021-11-08 04:12:39 【问题描述】:我正在为另一个应用程序编写一个 dll,我想在这个应用程序中实现我自己的按钮,该按钮将打开一个 dll,进而打开 WPF 表单。
问题是,当应用程序打开时,我想为用户稍后打开的 WPF 应用程序做一些事情。例如,我想创建模块目录。换句话说,我想在不打开主窗口的情况下初始化 WPF 应用程序。 由于从另一个 dll 打开 WPF,我创建了我的应用程序的一个实例:
App app = new App();
我的 App 类基本上是这样的:
public partial class App : PrismApplication
protected override Window CreateShell()
return Container.Resolve<MainWindow>();
protected override void RegisterTypes(IContainerRegistry containerRegistry)
protected override IModuleCatalog CreateModuleCatalog()
所以我希望完成 CreateModuleCatalog 和 RegisterTypes 方法,但不想现在从 CreateShell 方法显示 MainWindow。
谁能告诉我如何处理这个问题?
【问题讨论】:
您真的需要防止您的主窗口被创建或仅仅显示吗?如果是后者,也许您可以使用Visibility.Collapsed
创建它,然后让 DLL 稍后触发更改其可见性。
乔,谢谢!这是我会考虑的方式之一!
【参考方案1】:
如果您从CreateShell()
返回null
,则没有可显示的窗口。
您也可以覆盖OnInitialized()
。这是 Prism 默认调用 MainWindow?.Show()
的地方。
话虽如此,始终尽快显示某种启动窗口是一个好习惯。
【讨论】:
以上是关于如何在 Prism 中不打开 MainWindow 的情况下创建模块目录和 Reigster 类型的主要内容,如果未能解决你的问题,请参考以下文章