2011-12-14 44 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

相关问题