打开新窗口时,如何阻止WPF应用关闭主窗口



我使用此方法从我的主窗口显示另一个窗口。

   public void DisplayLobbyWindow()
    {
        var d = Application.Current.Dispatcher;
        if (d.CheckAccess())
        {
            new LobbyWindow()
            {
                Owner = this
            }.Show();
            this.Close();
        }
        else
        {
            d.BeginInvoke((Action)DisplayLobbyWindow);
        }
    }

但是,当我显示新的应用程序时,主应用程序关闭。我不希望它关闭,我只想让第一个窗口消失并显示下一个窗口。那怎么可能?谢谢。

编辑:我想可能是因为所有者属性设置为主窗口 - 但是我需要它在主窗口的位置启动,因此我将所有者设置为所有者。有解决方法吗?

修改代码以隐藏窗口。您还可以指定启动位置,因为您说要新窗口弹出旧窗口。

public void DisplayLobbyWindow()
{
    ...
        new LobbyWindow()
        {
            Owner = this,
            WindowStartupLocation = WindowStartupLocation.CenterOwner
        }.Show();
        this.Hide();
    ...
}

然后在您的第二种形式中订阅Closed事件:

<Window x:Class="WpfApplication1.LobbyWindow"
    Title="LobbyWindow" Closed="LobbyWindow_OnClosed">

,您可以再次显示第一个表单。否则,第二个窗口将显示,您的应用将保持运行,不可见。

 private void LobbyWindow_OnClosed(object sender, EventArgs e)
 {
     Owner.Show();
 }

最新更新