2017-02-13 41 views
1

我想在我的WPF窗口未打开时运行一段代码。以下代码无法正常工作,请检查并让我知道我做错了什么。如何确定WPF窗口是否打开?

var window = IsWindowOpen<Window>(this.Title); 
if(window) 
{ 
    //do something 
} 
else 
{ 
    // My code block     
}   
public static bool IsWindowOpen<T>(string name = null) where T : Window 
{ 
    var windows = Application.Current.Windows.OfType<T>(); 
    return string.IsNullOrEmpty(name) ? 
     Application.Current.Windows.OfType<T>().Any() : 
     Application.Current.Windows.OfType<T>().Any(w => w.Name.Equals(name)); 
} 
+2

什么是与代码的问题? – Pikoh

+0

即使我的窗户打开,其运行但布尔是假的... –

+0

我假设您正在搜索的wpf窗口是同一个应用程序的一部分。那个窗口的类名是什么? – Pikoh

回答

2

你传入Window.Title,但随后在IsWindowOpen功能,您试图匹配Window.Name

+0

标题和名称都相同。 –

+0

@ThiyaguRajendran paul是对的。这个名字可能是空的。只需将'w.Name.Equals(name)'换成'w.Title.Equals(name)',它就可以工作 – Pikoh

+0

感谢兄弟....我没有注意到它。 –