2011-12-14 64 views
0

我在自定義面板中的項目不會更改它們的大小,只是剪輯。Silverlight自定義面板:如何影響兒童身高?

我有面板大小爲400px的高度和列表框中充滿了項目(滾動條)。

我想提出的是孩子只需要我的面板的高度這樣的一半ArrangeOverride:

Children.Single().Arrange(
    new Rect(0, 0, child.DesiredSize.Width, finalSize.Height/2)); 

起初,它看起來像它的工作很好,但真正的列表框的尺寸並沒有改變它仍然是400px,但只有頂部200px是可見的 - 它被剪裁而不是調整大小。

我得到了更復雜的面板,但其中的所有項目都被裁剪掉了。任何提示有什麼不對?

回答

1

創建自定義面板時,它的子尺寸必須在MeasureOverride方法中計算,而不是在Arrange中計算。將代碼從ArrangeOverride移動到MeasureOverride並進行一些小的調整,迫使自定義面板按預期運行。

Arrange的第二個參數必須不小於MeasureOverride方法中計算的DesiredSize。如果沒有 - 項目將被剪裁。

1

製作兩行*高的網格,並將您的列表框放在頂部。確保scrollviewer.horizo​​ntalscrollbar/verticalscrollbar屬性沒有設置爲隱藏,你應該沒問題。

好像你正在努力使它比需要的更復雜。

+0

+1網格是你的朋友。 – jv42 2011-12-14 16:38:45