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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Non sono una macchina... *