У меня проблемы с этим способом "Application.Current.Windows.OfType (). SingleOrDefault (x => x.IsActive);" особенно потому, что я строил приложение с главным окном, тогда у меня были проблемы, когда было выбрано главное окно. Я разрешаю это, создав это:
В каком-то базовом классе или App.xaml.cs создайте это:
public static Window ActivatedWindow {get;set;}
Затем поместите в свой базовый класс производное Окно или все события активации вашего Окна:
Первый вариант - Базовый класс персонального окна:
public class MetroToolWindowBase
{
public MetroToolWindowBase()
{
Activated += new EventHandler(MakeActive);
}
private void MakeActive(object sender, EventArgs e)
{
App.ActivatedWindow= this;
}
}
Второй вариант - в активированном событии Windows:
private void XWindow_Activated(object sender,EventArgs e)
{
App.ActivatedWindow= this;
}