Как проверить, открыто или закрыто окно WPF

Я хочу проверить, открыто или закрыто какое-то окно. Если окно уже открыто, сфокусируйтесь на нем. если окно уже закрыто, откройте окно.

Я использую этот код:

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

private void MenuItem1_OnClick(object sender, RoutedEventArgs e)
{
    if (IsWindowOpen<Window>("TestForm")) return;
    var window1 = new Window1 { Name = "TestForm", Title = "Welcome", };
    window1.Show();
}

Вы можете помочь с этим?

1 ответ

Решение
public static T IsWindowOpen<T>(string name = null)
    where T : Window
{
    var windows = Application.Current.Windows.OfType<T>();
    return string.IsNullOrEmpty(name) ? windows.FirstOrDefault() : windows.FirstOrDefault(w => w.Name.Equals(name));
}

private void MenuItem1_OnClick(object sender, RoutedEventArgs e)
{
    var window = IsWindowOpen<Window>("TestForm");

    if (window != null)
    {
        window.Focus();
    }
    else
    {
        window = new Window1 { Name = "TestForm", Title = "Welcome", };
        window1.Show();
    }
}
Другие вопросы по тегам