关闭MainWindow会隐藏子窗口

时间:2016-03-18 09:04:27

标签: c# wpf

从子窗口(pgLogin)关闭主窗口(pgDashboard)时,我的子窗口根本不想显示。在我的previous question中,我设置了" ShutdownMode"到" OnExplicitShutdown",这样当我关闭主窗口时,整个应用程序都不会关闭。现在唯一的事情是我的应用程序没有关闭,但我的子窗口根本不显示。

这是我的主窗口(pgLogin)的编码:

Window nextWindow = null;
nextWindow = new pgDashboard();
nextWindow.Owner = this;
this.Hide();
nextWindow.Show();

我的孩子窗口(pgDashboard):

public static T IsWindowOpen<T>(string name = null) where T : Window
{
    var windows = Application.Current.Windows.OfType<T>();
    return string.IsNullOrEmpty(name) ? windows.FirstOrDefault() : windows.FirstOrDefault(w => w.Name.Equals(name));
}


private void HAZEDashboard_Loaded(object sender, RoutedEventArgs e)
{
    var credentials = this.Owner as pgLogin;
    credentials.txtEmailAddress.Text.ToString();

    var window = IsWindowOpen<pgLogin>();

    if (window != null)
    {
        window.Close();
    }
}

知道为什么会这样吗?

编辑:刚做了一个测试,我可以看到,当我关闭主窗口时,我的子窗口也会因某种原因关闭,因为当我尝试打开this.Show();时我的孩子窗口,它给了我这个错误:

  

窗口关闭后,无法设置可见性或调用Show,ShowDialog或WindowInteropHelper.EnsureHandle。

编辑2:我认为问题可能是因为我将主窗口(pgLogin)设置为子窗口的所有者(pgDashboard)?

1 个答案:

答案 0 :(得分:0)

我明白了。这就是我所做的:

我的主窗口(pgLogin):

Window nextWindow = null;
nextWindow = new pgDashboard();
App.Current.MainWindow = nextWindow;
nextWindow.Show();

我的孩子窗口(pgDashboard):

public static T IsWindowOpen<T>(string name = null) where T : Window
{
    var windows = Application.Current.Windows.OfType<T>();
    return string.IsNullOrEmpty(name) ? windows.FirstOrDefault() : windows.FirstOrDefault(w => w.Name.Equals(name));
}

private void HAZEDashboard_Loaded(object sender, RoutedEventArgs e)
{
    var window = IsWindowOpen<pgLogin>();

    if (window != null)
    {
        var credentials =  window.txtEmailAddress.Text.ToString();
        window.Close();
    }
}

我没有将子窗口的所有者(pgDashboard)设置为pgLogin,因为当我关闭主窗口(pgLogin)时,主窗口的所有窗口拥有,关闭。