如何检查WPF窗口是打开还是关闭

EBS*_*EBS 2 c# wpf wpf-controls wpf-4.0

我想检查一些窗口是打开还是关闭.如果窗口已经打开,请将其对焦.如果窗口已经关闭,请打开窗口.

我用这个代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

你能帮帮忙吗?

Lif*_*ess 5

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();
    }
}
Run Code Online (Sandbox Code Playgroud)