Menu Chiudi

WPF : come sapere se una finestra è già aperta

In WPF vi è una raccolta di finestre (Windows) nella classe Application, per cui si può creare un metodo di supporto per controllare se la finestra è aperta.
Questo snippet controlla se è aperta una finestra di un certo tipo o con un certo nome, o entrambi.

public static bool IsWindowOpen < T >( string name = "" ) where T : Window
 {
 return string . IsNullOrEmpty ( name )
 ? Application . Current . Windows . OfType < T >(). Any ()
 : Application . Current . Windows . OfType < T >(). Any ( w => w . Name . Equals ( name ));
 }
 

Per usare il metodo, sarà sufficiente richiamarlo con:


if (IsWindowOpen("MyWinName"))
  {
     //Fai qualche cosa oppure
     return;
  }

if (IsWindowOpen<MyWin>())
  {
    MessageBox.Show("La Maschera è già aperta...", "Notifica", MessageBoxButton.OK);
    return;
  }

if (IsWindowOpen("CustomWinName"))
 {
   //Fai qualche cosa oppure
   return;
 }

Tratto da stackoverflow

Pubblicato il c#, Sviluppo sw, WPF