Cal、EventAggregator和Application.Deactivated的问题

本文关键字:Deactivated 问题 Application EventAggregator Cal | 更新日期: 2023-09-27 18:02:41

我在CAL和事件聚合器方面遇到了一个有趣的问题。我试图发布一个事件时,应用程序被停用或激活(应用程序。Activated和application.deactivated)。我的一些模块有弹出框,当应用程序失去焦点时,我想隐藏它们。

下面是一小段代码示例

app.xaml.cs

protected override void OnStartup(StartupEventArgs e)
{
    eventAggregator.GetEvent<AppDeactivatedEvent>().Subscribe(RunIt);
    Deactivated += (s, a) => eventAggregator.GetEvent<AppDeactivatedEvent>().Publish(EmptyPayload.Empty);
    Deactivated += (s, a) => Console.WriteLine("Deactivated - in app.xaml"); 
    Activated += (s, a) => eventAggregator.GetEvent<AppActivatedEvent>().Publish(EmptyPayload.Empty);
    base.OnStartup(e);
}

Module.cs

ea.GetEvent<AppActivatedEvent>().Subscribe(presenter.AppDeactivated);

主持人

public void AppDeactivated(EmptyPayload empty)
{
    Console.WriteLine("App Deactivated - Module");
}

发生的情况是,当应用失去焦点时,我在控制台中得到以下内容停用app.xaml当应用程序恢复焦点时,我得到以下内容App停用- Module

你知道为什么事件聚合器要等到应用恢复焦点后才触发事件吗?

谢谢

Cal、EventAggregator和Application.Deactivated的问题

原来我的事件订阅有问题。没事,就是眼睛累了