Вы можете создать метод расширения, чтобы сделать его более чистым:
static class DataRowExtensions
{
public static object GetValue(this DataRow row, string column)
{
return row.Table.Columns.Contains(column) ? row[column] : null;
}
}
Теперь вызовите его, как показано ниже:
foreach(DataRow row in table)
return yield new Thingy { Name = row.GetValue("hazaa") };
Когда вы минимизируете или устанавливаете фокус на что-либо еще, isactive становится false, потому что окно больше не имеет фокуса.
https://docs.microsoft.com/en-us/dotnet/api/system.windows.window.isactive?view=netframework-4.7.2
Singleordefault будет вернуть ноль, если ничего не подходит.
Поэтому я предлагаю вам снять неактивный чек.
System.Windows.Application.Current.Windows.OfType<My_Window>().SingleOrDefault).My_Window_Method();
Но я также предлагаю вам рассмотреть возможность развязки и использования суб-паттерна паба, такого как mvvmlight messenger.