2017-02-13 3 views
1

Ich versuche, einen Block von Code auszuführen, wenn mein WPF-Fenster nicht geöffnet ist. Der folgende Code funktioniert nicht, bitte überprüfen Sie ihn und lassen Sie mich wissen, wo ich falsch liege.Wie kann festgestellt werden, ob das WPF-Fenster geöffnet ist?

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

Was ist das Problem mit diesem Code übereinstimmen? – Pikoh

+0

Es läuft aber Bool ist falsch, obwohl mein Fenster geöffnet ... –

+0

Ich nehme an, dass das WPF-Fenster, das Sie suchen, Teil der gleichen Anwendung ist. Wie lautet der Name der Klasse dieses Fensters? – Pikoh

Antwort

2

Sie passieren Window.Title, aber dann in Ihrer IsWindowOpen Funktion Sie versuchen Window.Name

+0

Titel und Name sind identisch. –

+0

@ThiyaguRajendran Paul hat Recht. Der Name ist wahrscheinlich leer. Ändern Sie einfach 'w.Name.Equals (name)' für 'w.Title.Equals (name)' und es würde funktionieren – Pikoh

+0

Danke bro .... Ich habe es nicht gut bemerkt. –

Verwandte Themen