CAL とイベント アグリゲーターで興味深い問題が発生しています。アプリが非アクティブ化またはアクティブ化されたときにイベントを発行しようとしています (application.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");
}
何が起こるかというと、アプリがフォーカスを失うと、コンソールに次のように表示されます Deactivated - app.xaml アプリがフォーカスを取り戻すと、以下の App Deactivated - Module
アプリがフォーカスを取り戻してイベントが発生するまで、イベント アグリゲーターが待機する理由についてのアイデア。
ありがとう