我有一個Expander控件,我需要計算它的邊界而沒有不可見的元素和邊距。它通常可以通過VisualTreeHelper.GetDescendantsBounds
完成。但是,似乎由VisualTreeHelper計算的矩形不依賴於擴展器狀態。例如:如何計算擴展器的邊界框?
http://i.piccy.info/i5/58/39/273958/collapsed.jpg
(我不能發佈圖像對不起。)
了相同的結果作爲用於展開狀態(圖像上的淺綠色矩形)。有人知道如何解決這個問題嗎?
我有一個Expander控件,我需要計算它的邊界而沒有不可見的元素和邊距。它通常可以通過VisualTreeHelper.GetDescendantsBounds
完成。但是,似乎由VisualTreeHelper計算的矩形不依賴於擴展器狀態。例如:如何計算擴展器的邊界框?
http://i.piccy.info/i5/58/39/273958/collapsed.jpg
(我不能發佈圖像對不起。)
了相同的結果作爲用於展開狀態(圖像上的淺綠色矩形)。有人知道如何解決這個問題嗎?
Expander控件將其內容的可見性設置爲Collapsed,這意味着它在佈局過程中不會被考慮,並且不會包含在GetDescendantBounds中。但是,擴展器可以被佈局引擎強制爲具有更大的尺寸,並且擴展器自己的尺寸包含在GetDescendantBounds中。
嘗試在擴展器上設置VerticalAlignment="Top"
。默認值爲Stretch
,如果父級擁有更多可用空間,這將允許它的大小增加。還要確保你沒有明確地設置Height
屬性。
這是sample application。樣式應用於TreeView控件及其項目。但問題並不取決於風格。
感謝您的回答!但似乎擴展器邊界矩形不依賴VerticalAlignment(我試圖將此屬性更改爲Top)。我會嘗試製作示例應用程序並將其附加到問題中。 – sedovav 2010-07-06 06:06:54