Хорошо, поэтому у меня есть окно, которое появляется ( во время нормальной работы программы ) по запросу пользователя, чтобы отобразить некоторую контекстно-зависимую информацию.В этом окне много элементов, поэтому загрузка занимает 0,5 - 1 сек.Однако, поскольку я ожидаю, что это окно будет содержать несколько различных типов информации в зависимости от контекста, ширина и высота его содержимого могут различаться.Таким образом, я установил значение SizeToContent на «WidthAndHeight», чтобы разрешить изменение размера окна в зависимости от того, какой контент связан с ним.
Однако, так как загрузка окна занимает некоторое время, пользователь сначала видит маленькое квадратное окно, а затем полноразмерное окно после того, как все рендерится.Я бы не хотел, чтобы пользователь видел маленькое окно, прежде чем оно полностью загрузится.
Есть ли способ заставить окно отображать только ПОСЛЕ того, как оно полностью отрисовалось?
Что я пробовал:
установить видимость окна на «Скрытый» и затем установить его на «Видимый» в обработчике событий ContentRendered: окно никогда не отображалось.
установить непрозрачность окнав 0, а затем установите его в 1 в обработчике событий ContentRendered: непрозрачность содержимого в самом окне устанавливается в 0, затем в 1.
Обновление: еще одна попытка
Я также попытался установить Window.WindowState в значение «Minimized» в XAML, а затем установить его в «Normal» в обработчике событий ContentRendered.Кажется, это работает частично, хотя ширина самого окна больше, чем должна быть.Хуже того, кажется, что содержимое в окне отображается в соответствии с правильным размером для окна, а затем окно становится больше без повторной визуализации содержимого.Таким образом, содержимое не центрируется в окне, и у нас есть неприятный черный прямоугольник справа от содержимого, который представляет собой разницу между правильным размером окна и текущим (большим) размером.Когда я изменяю размер окна вручную, захватывая край окна, содержимое перерисовывается правильно, и все выглядит хорошо.Но как заставить такой повторный рендеринг в коде?Window.UpdateLayout () не работает.