【问题标题】:How to create Module Catalog and Reigster Types without opening the MainWindow in Prism如何在 Prism 中不打开 MainWindow 的情况下创建模块目录和 Reigster 类型
【发布时间】: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 稍后触发更改其可见性。
  • 乔,谢谢!这是我会考虑的方式之一!

标签: c# wpf prism


【解决方案1】:

如果您从CreateShell() 返回null,则没有可显示的窗口。

您也可以覆盖OnInitialized()。这是 Prism 默认调用 MainWindow?.Show() 的地方。

话虽如此,始终尽快显示某种启动窗口是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2016-12-05
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多