我有一個由矩形和幾個動態創建的標籤(動態的,因爲在設計時我不知道應該顯示多少個標籤)組成的複合控件。標籤的位置(邊距)通過組合整個控件大小,通過依賴屬性傳遞的附加集合以及標籤本身的高度,在運行時進行評估。在渲染過程之前確定控件的大小
不幸的是,在渲染之前,我並沒有採用確定性的方式確定標籤高度。 ActualWidth
和ActualHeight
在顯示標籤之前爲0,沒有設置寬度/高度,因爲我希望標籤根據其內容自行調整大小,DesiredSize
返回0,正確的尺寸或尺寸超過實際標籤尺寸(如2或3次),RenderSize
返回有效大小或0,它就像第一個標籤返回有效大小,第二個 - 0.0,沒有任何明顯的原因。
我試過用double.PositiveInfinity調用Measure()
只是爲了達到目的,當DesiredSize
的方式比預期的要大時(所有的標籤都有相同的字體,只包含數字,所以它們都會有更多的較小的相似尺寸,但首先有〜16像素,第二〜36,雖然在渲染後,RenderSize
是有效的兩個)。
是否有檢查所需的控制大小確定性方式,僅基於內容(而不是在對準/利潤)它呈現在屏幕前?
我已經測試了一點,遇到了一些情況,甚至在父級和標籤本身都調用UpdateLayout之後,ActualHeight的標籤爲0.0。在渲染之前,似乎還沒有確定性的方法來確定對象的高度...... – Spook 2011-05-20 10:17:51
適合我。 – David 2012-08-13 22:22:05
你的答案似乎是迄今爲止最接近解決方案,所以我會接受它:) – Spook 2013-01-08 20:41:47