我以编程方式创建了一个新窗口和框架,以便导航到单独的页面(身份验证)。关闭窗口后,我想做一些事情,但if
语句永远不会返回false。
Window newWindow = new Window();
Page authentication = new Authentication();
Frame newFrame = new Frame();
newWindow.Title = "Authentication";
newWindow.Content = newFrame;
newFrame.NavigationService.Navigate(authentication);
newWindow.Show();
if (IsWindowOpen<Window>("Authentication") == false)
{
//DO THINGS HERE
}
这是我的IsWindowOpen
方法:
public static bool IsWindowOpen<T>(string name = null) where T : Window
{
return string.IsNullOrEmpty(name)
? Application.Current.Windows.OfType<T>().Any()
: Application.Current.Windows.OfType<T>().Any(w => w.Title.Equals(name));
}
我设法打开新窗口并运行单独的页面,但在关闭时没有任何反应。我在if语句中添加了一个打印行来检查,但它不会打印。
答案 0 :(得分:0)
调用Show()
不会阻止主线程。
如果你想在窗口关闭时做某事,你应该处理Closing
事件并在那里做事。
如果要在窗口关闭之前阻止当前线程,则应使用ShowDialog()
代替。