【发布时间】:2016-03-18 17:47:34
【问题描述】:
当从子窗口 (pgDashboard) 关闭我的主窗口 (pgLogin) 时,我的子窗口根本不想显示。在我的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:我认为问题可能是因为我将主窗口(@987654330@)设置为子窗口的所有者(pgDashboard)?
【问题讨论】:
-
关于您之前的问题:stackoverflow.com/questions/5708992/how-to-switch-wpf-windows;我认为这将是解决您的问题的更好方法
-
@ASh 感谢您引导我朝着正确的方向前进!我想到了。 :)