2017-02-13 119 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

感謝兄弟....我沒有注意到它。 –