1

私のWPFアプリケーションにはMainWindow、[設定]ボタンのある通常のアプリケーションがあります。[設定]ボタンをクリックしたときに、別の[設定]ウィンドウをモーダルで開く必要があります。

public partial class MainWindow : Window
{
    //...

    // On Settings button click ...
    var settingsWindow = new SettingsWindow();
    settingsWindow.Owner = this;
    settingsWindow.ShowDialog();
}

SettingsWindow小さな「OK/キャンセル」ダイアログだけではありませんが、アプリケーションフローを続行する前にいくつかの構成作業を完了する必要があるため、モーダルにする必要があります(したがって、を使用します)ShowDialog()SettingsWindow最小/最大/閉じるボタンのある通常のウィンドウもそうです。

ユーザーがを最小化すると、バックグラウンドにプッシュされるだけでなく、最小化される必要がありますSettingsWindowMainWindowこれを行うと、これは正しく機能します。

public partial class SettingsWindow : Window
{
    // ...
    protected override void OnStateChanged(EventArgs e)
    {
        base.OnStateChanged(e);
        if (WindowState == WindowState.Minimized && Owner != null)
        {
            Owner.WindowState = WindowState.Minimized;
        }
        if (WindowState == WindowState.Normal && Owner != null)
        {
            Owner.WindowState = WindowState.Normal;
        }
    }
}

SettingsWindowとが最小化されている場合MainWindow、アイコン上でマウスをクリックすることで通常のWindowStateに戻すことができますが、このリストにアプリケーションが表示されなくなったため、「Alt+Tab」を使用してこれを実現することはできません。「Win-Key+Tab」リストでは、アプリはまだそこにあります。

アプリケーションを「Alt+タブ」リストに保持する可能性はありますか?そんなにありSettingsWindow.WindowStyleません。SingleBorderWindowToolWindow

この質問はこれに似ていますが、目標は少し異なります。

4

0 に答える 0