2012-03-15 58 views
1

我有一個ItemsControl的地圖上放置符號的窗口。這些符號相當複雜(每一個都由幾個UserControl組成)。ItemsControl由於項目太多而刷新兩個階段?

我有一些場景,每個場景都在地圖上放置一組獨特的符號。有一個允許用戶在場景之間切換的下拉菜單。

如果用戶切換到場景A(其具有22個符號),整個地圖一次性刷新。

如果用戶切換到場景B(其具有39個符號),在地圖上顯示刷新兩次。繪製符號的某些部分,然後在稍後的一小段時間,繪製符號的其餘部分。最後,符號顯示正確,但兩階段刷新非常尷尬,看起來不專業。 (這將是,如果你試圖把一堆汽車的路線圖上,並且代替汽車剛剛出現,第一輛汽車的屍體出現了,再晚一會兒,車輪和鏡子出現了。)

在試圖調試這個時,我想到了兩種情況之間的不同,而且我真正唯一能想到的是符號的數量是不同的。 (這些特殊屬性的差異都是非常隨意的)。所以,我只用情景B的前22個符號進行了測試。地圖刷新一次。我多次提高了符號的數量,並且地圖仍然一次性更新。但是,當我達到38個符號時,地圖又分兩個階段更新。爲了防止最後兩個符號有些奇怪,我試着跳過前兩個,然後抓住其餘的37個,但是地圖又一次更新。最後,我嘗試跳過第一個符號,然後抓住剩餘的38個。現在回到更新地圖的兩個階段。

底線:如果試圖ItemsControl的一次呈現38個或更多的符號,它發生在兩個階段中,否則,它發生於一體。無論符號的數量多少,我都希望地圖在一個階段刷新。

從我讀過有關WPF虛擬化,我不認爲這種行爲有資格作爲虛擬化,因爲,一旦渲染完成,沒有符號被隱藏或關閉屏幕。我的顯示器足夠大,沒有活動的滾動條。

所以,我完全被我在這裏遇到的困惑所困惑。任何想法讚賞。


更新

我試過的可見性設置爲隱藏,然後進行更新,然後設置可見回可見。沒有區別。地圖仍然刷新到階段。 (我也試過暈倒,而不是隱藏的,仍然沒有奏效。)

回答

0

你explaind的東西,似乎是真的神祕。 也許它可能是一個臨時選項,可以將所有重繪符號的不透明度設置爲0,並將可見性設置爲摺疊或隱藏。

選擇場景時,所有元素的可見性都變爲「可見」。 當最後一個符號調用IsVisibleChanged在事件你的所有元素的不透明度設置爲1

我知道,這將是一個非常不專業和基本的解決方案,但是這可能是(如果這個工程)爲您的問題的quickfix直到建立真正(或更多)專業解決方案。

親切的問候 Shounbourgh