【问题标题】:WPF: Unable to raise Window.Closing event from app moduleWPF:无法从应用程序模块引发 Window.Closing 事件
【发布时间】:2020-04-01 22:23:50
【问题描述】:

我负责使用Prism Library for WPF 开发较旧的 WPF 模块化应用程序。在这种情况下,对我来说,应用程序的入口点是一个重写的 Initialize() 方法,因为我无法访问 Application.MainWindow 的 App 类。该类与其他一些帮助类一起被编译为 EXE 文件和 DLL。

目前我面临一个问题,即我必须在关闭应用程序期间捕获 未引发Window.Closing 事件。通常,放入构造函数的这段代码(在这种特定情况下放入 Initialize() 方法)按预期工作

Application.Current.MainWindow.Closing += (s, e) =>
{
  e.Cancel = true;
};

另一方面,事件Window.Closed 被触发,没有任何问题。

在我看来,不可能将此事件处理程序关联到Application.MainWindow 的构造函数之外,还是我有什么问题?请帮我。

【问题讨论】:

    标签: c# wpf events event-handling prism


    【解决方案1】:

    问题已找到。引发Closing 事件的OnClosing 方法在shell 中实现,它看起来像这样

    protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
    {
         e.Cancel = true;
         ViewModel.StartShutdownSequence();
    }
    

    StartShutdownSequence() 封装了一些关于处理单个模块的逻辑,最后它调用Application.Current.Shutdown(),这肯定会关闭应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      相关资源
      最近更新 更多