Comment puis-je m'assurer que seulement une Fenêtre WPF est ouvert à la fois?

J'ai une fenêtre WPF que je suis en train de lancer à partir de l'intérieur d'une application winform. Je veux seulement permettre à la fois instance de la fenêtre WPF pour être ouvert à la fois, et de ne pas avertir l'utilisateur si ils essaient de l'ouvrir à nouveau.

Je vais avoir un problème, toutefois, en essayant de recherche pour que WPF fenêtre étant ouverte parce que la fenêtre est en train d'être lancé à partir d'un winform. Ce que j'ai normalement le faire est lorsque vous recherchez une winform, je recherche toutes les instances de ce winform existant dans le Application.Current.OpenForms, et quand en WPF, je recherche pour Application.Current.Windows

Le problème que j'ai c'est que System.Windows.Application.Current est nul lorsqu'il est lancé à partir de l'intérieur d'un winform, je ne peux donc pas la recherche de la fenêtre de WPF de cette façon. Est-il meilleure façon de chercher une instance existante d'une fenêtre ouverte?

Mon Code:

if (System.Windows.Application.Current != null)
                {
                    foreach (System.Windows.Window win in System.Windows.Application.Current.Windows)
                    {
                        if (win is frmCaseWpf)
                        {
                            MessageBox.Show("You may have only one active case open at a time.", "Open Case",
                                      MessageBoxButtons.OK,
                                      MessageBoxIcon.Stop);

                            win.WindowState = System.Windows.WindowState.Normal;
                            win.Focus();
                            win.Activate();
                            return;
                        }
                    }
                }

OriginalL'auteur Russ | 2009-08-26