Вопрос:
Как я могу проверить, открывается ли окно или нет. Является ли это возможным?
Например:
if (window.IsOpen) { // window is open } else { // window is not open } Ответ №1
Чтобы проверить, отображается ли окно в текущем приложении:
if(System.Windows.Application.Current.Windows.Contains(yourWindow)) { // the window has been shown } else { yourWindow.Show(); }
Чтобы проверить, не окончено ли окно:
if(yourWindow.WindowState != WindowState.Minimized) { // the window is currently not minimized } else { yourWindow.WindowState = WindowState.Normal; // or WindowState.Maximized } Ответ №2
Вы можете сохранить ссылку на окно при его открытии. В этом случае вам действительно не нужно искать его в окнах. В противном случае вам придется получить его на основе типа данного окна.
Window1 instance = Application.Current.Windows.OfType<Window1>().SingleOrDefault(); if (instance !=null) { instance.Show(); }
Если это может быть один из нескольких типов типов окон, и вам нужен общий подход, то это немного более странно. Здесь у меня есть фиксированное значение для моего типа, но вы хотите, чтобы на каждом окне была кнопка, каждая из которых имела тип этого окна.
Type specificType = typeof(Window1); Window instance = null; foreach (Window win in Application.Current.Windows) { if(win.GetType() == specificType) { instance = win; } } if (instance != null) { instance.Show(); }