Поиск открытых окон в XAML

#c# #.net #wpf

#c# #.net #wpf

Вопрос:

Мне нужна функциональность для получения всех существующих (открытых) экземпляров некоторого конкретного WPF окна. Я создаю эти окна программно в нескольких местах кода.

Есть ли для этого решение на XAML / WPF? Что-то вроде GetInstancesByType(type) ?

Ответ №1:

Вы можете использовать приложение.Свойство Windows:

 foreach( var window in Application.Current.Windows.OfType<MyType>() )
{
    // do stuff
}
  

Как указал Х.Б., вам нужно было бы включить, System.Linq чтобы получить OfType<T> метод расширения, но в этом нет необходимости.

Комментарии:

1. Вопрос не в том, как перечислить окна.

2. @H.B.: Ммм … да, это так. Операционная система создает окна в коде. Эти окна автоматически добавляются в Application.Windows коллекцию. Вы можете найти их по названию, Type или любому другому свойству, которое вы пожелаете использовать. Что вам кажется сложным в этом?

3. Оператору нужны конкретные окна, и он запросил решение на XAML.

4. @H.B.: Хорошо, что ж, удачи в поиске открытых окон в XAML. Я даже не знаю, что вы подразумеваете под «решением XAML». Вы никогда не смогли бы сделать это в XAML.

5. Вы можете делать практически все в XAML, это расширение является крайним примером.