#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, это расширение является крайним примером.