2010-07-29 66 views
2

我注意到,當我在窗口隱藏時更改窗口的可視化表示時,顯示窗口時不會立即看到更改。相反,該窗口短暫出現在最後一次可見的狀態,需要0.5-1秒才能顯示更新後的表單。強制WPF隱藏時渲染一個窗口?

當我的窗口顯示時,它可能會令人困惑和醜陋,它默認沒有選擇任何項目,但如果在關閉時選擇了某些項目,它將顯示爲當它打開時再次選擇這些項目,只有一秒鐘後消失。

有沒有什麼辦法可以強制WPF呈現窗口,即使它不可見,以便它在顯示時處於正確的狀態?

+0

你如何更新窗口?你可以重寫OnRender方法,並在那裏做,也可以調用UpdateLayout() 我做了像你一樣的東西,沒有這個問題,這似乎有點奇怪。 – 2010-07-29 23:41:09

+0

試試window.InvalidateVisual()方法。它會觸發OnRender事件,但只有當窗口可見時纔會觸發,所以我不確定當窗口隱藏時它是否會爲你做任何事情。你可以複製這個簡單的例子,並告訴我們的代碼?我試圖自己複製它,但我不能。 – Carlo 2010-07-29 23:54:02

+0

不幸的是,它可能很難重現,因爲你需要一個相對複雜的窗口來顯示延遲。我也在處理自定義鉻窗口,這可能與它有關。 – devios1 2010-07-30 00:12:24

回答

4

原來這是操作系統的限制 - 顯然WPF無法訪問窗口位圖或某些東西,如果窗口被隱藏。通過將窗口的不透明度設置爲0或1而不是隱藏/顯示,我發現了一種解決方法,它似乎工作得很好。