Получение списка всех окон в текущей теме - PullRequest
1 голос
/ 21 ноября 2011

Я запускаю новый UI-поток в моем WPF-приложении. Сейчас я ищу способ получить список со всеми окнами в этой теме - как я получу его для основного потока с System.Windows.Application.Current.Windows. Есть ли что-то в .NET-Framework или я должен сам это реализовать? Когда мне придется реализовать это самому, возможно, у кого-то есть небольшой пример кода?

1 Ответ

2 голосов
/ 21 ноября 2011

Цитировать MSDN :

Ссылка на окно автоматически добавляется в Windows, как только окно создается в потоке пользовательского интерфейса (UI); окна, созданные рабочими потоками, не добавляются. Ссылка на окно автоматически удаляется после обработки события закрытия и до возникновения события закрытия.

По умолчанию первый элемент, добавленный в свойство Windows, становится MainWindow.

Это свойство доступно только из потока, создавшего объект Application.

Таким образом, кажется, что окна, созданные рабочими потоками, не сохраняются ни в одной коллекции автоматически. Я предполагаю, что вы создаете это окно в рабочем потоке - поэтому вам следует сохранить ссылку на него для последующего доступа (вы можете сделать это в конструкторе Windows, добавив this в некоторый класс оконного менеджера)

...