Как я могу убедиться, что одновременно открыто только одно окно WPF?

У меня есть окно WPF, которое я запускаю из приложения winform. Я хочу разрешить открывать только один экземпляр этого окна WPF одновременно и не предупреждать этого пользователя, если он попытается открыть его снова.

У меня возникла проблема, однако я пытаюсь найти открытое окно WPF, потому что оно запускается из winform. Что я обычно делаю, так это при поиске winform, я ищу любые экземпляры этой winform, существующие вApplication.Current.OpenForms, а когда в WPF ищуApplication.Current.Windows

У меня проблема в том, чтоSystem.Windows.Application.Current имеет значение null при запуске из winform, так что я могуискать окно WPF таким образом. Есть ли лучший способ поиска существующего экземпляра открытого окна?

Мой код:

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;
                        }
                    }
                }

Ответы на вопрос(6)

Ваш ответ на вопрос