Подтвердить что ты не робот

Window.loaded пожары до того, как окно полностью загружено

У меня есть этот код:
Window w = // something
w.Loaded += // some code to take a screenshot of the window
w.Show();

Событие Loaded срабатывает до того, как окно будет полностью загружено, и я получу это изображение: Window screenshot

Я мог бы добавить Thread.Sleep или что-то после w.Show() и перед скриншотом, но мне нужно запустить этот кусок кода для сотен окон.
Мой вопрос: есть ли еще одно событие, которое срабатывает, когда окно полностью загружено? или каким-то образом достичь этого, не помещая нить в сон.

Спасибо

4b9b3361

Ответ 1

Заглядывая в Объект жизни жизни в MSDN, вы можете найти:

Событие Loaded поднимается до окончательного рендеринга, но после система макета рассчитала все необходимые значения для рендеринга. Loaded подразумевает, что логическое дерево, содержащее элемент внутри завершено и подключается к источнику презентации, который обеспечивает HWND и поверхность рендеринга.

Вы должны попробовать несколько альтернативных событий, которые не подходят для ваших нужд. Вы должны попробовать в следующем порядке:

Обратите внимание, что эти события могут срабатывать многократно во время жизни вашего окна, поэтому напишите свое приложение с учетом этого.

WPF представляет собой архитектуру пользовательского интерфейса, управляемую данными, и работать с ней не очень приятно, так как мы привыкли в WinForms. Как только кто-то умнее меня сказал, WPF делает тяжелые вещи тривиальными и тривиальными вещами.