重複の可能性:
WPF UI が閉じるときの通知
以前にもよく似た質問をしたことがありますが、有用な回答は得られませんでした。誰かが私を助けてくれることを願っています。
Windows フォーム アプリとしてプログラムされた既存のトレイ アプリがあります。WPF としてプログラムされた既存の設定フォームがあります。
トレイ アプリは次のことができる必要があります。 * 設定アプリを n 回開きます。一度に開くインスタンスは 1 つだけです。 * ユーザーが設定アプリを閉じたときに通知を受け取ります。
設定アプリは ResourceDictionary を使用します。これは、App.xaml から開始する必要があることを意味すると思います。
設定ウィンドウを一度開いて、次のコードを使用してシャットダウンしたときにトレイに通知することはできますが、再度開くことはできません。
if (gui == null)
{
//shell = new mainWindow();
//shell.CloseEvent += settings_FormClosed;
gui = new App();
//gui.ShutdownMode = ShutdownMode.OnExplicitShutdown;
gui.MainWindow = shell;
gui.InitializeComponent();
//gui.Run();
gui.Exit += new System.Windows.ExitEventHandler(settings_FormClosed);
IsUIOpen = true;
}
上記の行のコメントを外すと、close イベントをインターセプトし、Visibility を Hidden に設定できます。次にユーザーが [設定] を選択したときに、[表示] に戻すことができます。ただし、初めて設定を開いたときに、Exit イベントがトリガーされず、シェルがすべての ReferenceDictionary を取得していない (または参照ディクショナリーへのアクセスが失われている) ため、ウィンドウが正しく表示されません。
アプリから WPF を実行し、MainWindow (多くの場合 null のようで、自分のウィンドウのタイプではない) にアクセスして、カスタム リスナーを mainWindow に追加できるようにする方法はありますか?
または、ユーザーが次に [設定] をクリックしたときに静的アプリを再インスタンス化できるように、静的アプリを破棄する方法はありますか。
WPF を Win フォームとうまく連携させるには、何らかの方法が必要であることはわかっています。助けようとするすべての人に感謝します。これは私に大きな頭痛の種を与えています。