从子窗口(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
)?
答案 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
)时,主窗口的所有窗口拥有,关闭。