2017-08-06 9 views
0

別のページ(認証)に移動するために、新しいウィンドウとフレームをプログラムで作成しました。ウィンドウを閉じると、何かしたいですが、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文に印字行を追加しましたが、印字しません。

答えて

0

Show()を呼び出すと、メインスレッドはブロックされません。 ウィンドウが閉じたときに何かしたいのであれば、Closingイベントを処理し、そこで何かする必要があります。 ウィンドウが閉じられるまで現在のスレッドをブロックする場合は、代わりにShowDialog()を使用してください。

関連する問題