【发布时间】:2019-11-01 14:28:19
【问题描述】:
我有一个MainWindow 页面和一个LoadingWindow。 MainWindow 有一个可自行关闭并打开 LoadingWindow 的按钮。我想要的是当用户关闭加载窗口以作为新实例返回主窗口时。
MainWindow.xaml.cs
private void Button_Click(object sender, RoutedEventArgs e)
{
LoadingWindow load = new LoadingWindow(calibration , "MainWindow" , this);
Mouse.OverrideCursor = null;
Application.Current.MainWindow.Close();
load.ShowDialog(); // Exception is here the next time it is called
}
LoadingWindow.xaml.cs
private void Close_Button(object sender, RoutedEventArgs e)
{
MainWindow main = new MainWindow();
this.Close();
main.ShowDialog();
}
现在,当我尝试关闭加载窗口并按下 Button_Click 时,load.ShowDialog() 会显示以下错误,尽管我正在声明它的新实例。
System.InvalidOperationException: Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed
我读到您在关闭窗口后无法打开窗口,但我有一个不会出现此问题的新实例。
【问题讨论】:
-
WPF 有一个主窗口的概念。让我们将其作为起始窗口的别名。通常起始窗口是主窗口的一个实例。当您关闭启动窗口时,应用程序将关闭。这意味着当你得到这个工作时你会遇到另一个问题。你可以设置主窗口是什么,你可以改变行为,但也许你的设计是这里的问题。也许你可以在加载完成后 .Hide() mainwindow 然后 .Show() 它。或者,如果您在主窗口而不是单独的窗口中显示加载动画/其他内容,可能会更简单。