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

ウィンドウが開いていても実行中ですが、ブール値はfalseです。 –

+0

検索しているwpfウィンドウが同じアプリケーションの一部であると仮定します。その窓のクラスの名前は何ですか? – Pikoh

答えて

2

あなたはWindow.Titleを渡しているが、その後、あなたのIsWindowOpen機能であなたはそのコードに問題は何Window.Name

+0

タイトルと名前は同じです。 –

+0

@ThiyaguRajendranポールが正しいです。おそらく名前は空です。 'w.Name.Equals(name)'を 'w.Title.Equals(name)'に変更するとうまくいくでしょう – Pikoh

+0

おかげで....私はそれに気づいていません。 –

関連する問題