检查窗口是否打开不起作用

时间:2017-08-06 15:00:46

标签: c# wpf

我以编程方式创建了一个新窗口和框架,以便导航到单独的页面(身份验证)。关闭窗口后,我想做一些事情,但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语句中添加了一个打印行来检查,但它不会打印。

1 个答案:

答案 0 :(得分:0)

调用Show()不会阻止主线程。 如果你想在窗口关闭时做某事,你应该处理Closing事件并在那里做事。 如果要在窗口关闭之前阻止当前线程,则应使用ShowDialog()代替。