2010-07-29 5 views
2

Я заметил, что когда я делаю изменения в визуальном представлении окна, когда окно скрыто, изменения не отображаются сразу, когда отображается окно. Скорее, окно отображается кратковременно в состоянии, в котором оно было, когда оно было видимым в последний раз, принимая 0,5-1 секунды для отображения обновленной формы.Заставить WPF отображать окно во время скрытия?

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

Можно ли каким-либо образом заставить WPF отображать окно, даже если оно не видно, так что, когда оно отображается, оно находится в правильном состоянии?

+0

Как вы обновляете окно? u может переопределить метод OnRender и сделал это там, также вы могли бы вызвать UpdateLayout() Я сделал что-то вроде u и havent имел эту проблему, мне кажется немного странным. –

+0

Попробуйте использовать метод window.InvalidateVisual(). Он запускает событие OnRender, но только тогда, когда окно видимо, поэтому я не уверен, что он сделает что-нибудь для вас, пока окно скрыто. Можете ли вы воспроизвести это в упрощенном образце и показать нам код? Я попытался воспроизвести его сам, но не смог. – Carlo

+0

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

ответ

4

Оказывается, это ограничение операционной системы - видимо, WPF не может получить доступ к растровому изображению окна или чем-то, если окно скрыто. Я нашел обходной путь, установив непрозрачность окна на 0 или 1 вместо того, чтобы скрывать/показывать, и кажется, что он работает очень хорошо.

Смежные вопросы