Как проверить, открыто или закрыто окно 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();
}
}