1

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

アプリがフォーカスを取り戻してイベントが発生するまで、イベント アグリゲーターが待機する理由についてのアイデア。

ありがとう

4

1 に答える 1

0

イベント サブスクリプションに問題があることがわかりました。問題ありません、目が疲れているだけです

于 2011-07-21T21:09:52.960 に答える