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

Определите размер окна WPF SizeToContent перед его отображением

У меня есть окно в моем приложении WPF, которое отображается иногда. Когда он отображается, он исчезает с аннуитетом, а при закрытии он исчезает. Ничего необычного, просто раскадровка, которая изменяет непрозрачность. Фактически окно никогда не закрывается, непрозрачность просто исчезает до 0, где она остается до тех пор, пока ее не отобразится снова.

Это окно представляет собой информативное окно и не всегда показывает одно и то же содержимое. Он имеет размер (ширина и высота) и хорошо работает в этом отношении. Пользователь выбирает основную область экрана для отображения (TopLeft, TopRight, Center, BottomLeft, BottomRight).

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

При позиционировании окна, скажем, в нижнем правом углу, я просто беру WorkingArea на экране (ширина и высота), а затем минус ширина/высота окна, чтобы получить верхнюю и левую позиции, которые мне нужны,

Логика работает, но проблема, с которой я столкнулась, - это Высота и Ширина окна, не возвращает размер, который был после обновления содержимого, но возвращает размер, который был последним, когда он был показан. Я предполагаю, что это связано с тем, что он еще не был представлен новым контентом.

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

Я попытался позиционировать окно в событии OnContentRendered, но это срабатывает только один раз, когда создается окно, а не после обновления содержимого, когда значение непрозрачности установлено на 0.

Кто-нибудь знает, как я могу получить точную ширину и высоту этого окна, прежде чем он исчезнет?

Любая помощь будет оценена!

4b9b3361

Ответ 1

Я нашел ответ на свой вопрос. После обновления содержимого простой вызов метода UpdateLayout() вызывает обновление. Вызывает ширину и высоту, затем возвращает точные значения.