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