WPF-версия Application.OpenForms

У меня есть приложение, в котором мне нужно будет открыть другое окно WPF. В WinForms я смог использовать:

MainWindow main = (MainWindow)Application.OpenForms["MainWindow"];

Чтобы иметь возможность получить доступ к форме. Сейчас в WPF его нет. Я видел другой пост на этом сайте, который имеет отношение, однако он использует Application.Window, который не содержится в вызове. Я просто:

  • Текущий
  • Равно
  • GetContentStream
  • GetCookie
  • GetRemoteStream
  • GetResourceStream
  • LoadComponet
  • RefrenceEquals
  • ResourceAssembly
  • SetCookie

Итак, мой вопрос заключается в следующем: есть ли другая версия для OpenForms, или есть просто другой способ сделать это?

3 ответа

Решение

Попробуйте посмотреть на: Application.Current, Более конкретно, Application.Current.Windows,

              Window2 wndw = new Window2();
        wndw.Owner = this;

        foreach (Window w in Application.Current.Windows)
        {
            if (w.Name == wndw.Name)
            {
                if (w.IsActive)
                {
                    w.Focus();
                    return;
                }
                else
                {
                    w.Show();
                    return;
                }
            }
        }

Я могу опоздать сюда, но на всякий случай, если это кому-то понадобится. Если Application.OpenForms отсутствует на вашей стороне, это потому, что вам нужно использовать System.Windows.Forms.Application.OpenForms

Например:

FormCollection fc = System.Windows.Forms.Application.OpenForms; Объект fc содержит такие свойства, как: Count и InnerList (очень полезно)

Надеюсь, это поможет, даже если это 2021 год, я думал, что кому-то понадобится эта информация (я нигде не видел, когда искал)

Другие вопросы по тегам