2009-11-05 21 views
0

我想通過區域管理器獲取區域的渲染大小。原因是每次我爲該區域添加一個視圖以確保它在視覺上合適時,我可以獲取我即將添加的視圖的維度,但我正在努力尋找一種獲得高度的方法我將要加入的地區。Silverlight PRISM獲取區域的渲染大小

很明顯,我想遠離代碼背後的視圖,直接訪問該地區的UIElement。

任何想法?

感謝您的時間

回答

-1

您可以使用

_regionManager.Regions[regionName].Views.ElementAtOrDefault(0); 

得到你想要使用的區域的當前視圖。 然後,您可以檢查該視圖的DesiredSize屬性,以查看該區域的可能寬度和高度。 我認爲這應該在正常使用情況下工作。

事情總是需要在該地區的視圖。如果沒有,你可能想要使用虛擬視圖等。

+0

謝謝,這就是我所需要的,出於某種原因,我沒有ElementAtOrDefault方法可用。 我每次創建一個新的視圖時,都會監聽它的加載事件,然後計算添加的視圖的大小,如果它的第一個視圖被添加的話 – Suiva 2009-11-05 12:51:55

+0

這實際上看起來不起作用,因爲我只能得到要添加的視圖的大小仍然是,而不是完整的區域面積。 – Suiva 2009-11-05 12:55:54

+0

ElementAtOrDefault是一個linq擴展方法。如果您添加「使用System.Linq;」到你的使用,這應該工作。 – RonaldV 2009-11-05 13:37:43

0

我建議不要試圖做到這一點。相反,我會專注於使區域適應過度填充(自動調整大小,滾動,製表符等)。

這裏可能會發生很多不可預知的事情。例如,有一些控件的視圖由其容器決定。要添加到該區域的視圖的實際大小隻有在實際添加到該區域之後纔會知道,因此做出此決定將是不平凡的。

我知道這並不直接回答你的問題,但希望它會有幫助無論。