运行时的WPF高度

时间:2011-05-12 09:09:54

标签: wpf runtime height

我是WPF的新手。我试图解决的一个问题是如何在运行时获得正确的高度。

在我的应用程序中,我动态地将Usercontrols添加到代码中的Stackpanel。 Usercontrol包含一些Texblock。然后,我的Stackpanel将用作BookPage的内容,此BookPage将添加到Book(http://wpfbookcontrol.codeplex.com/)。我的Stackpanel的高度不应超过一定值。

我已经发现我可以使用Measure&安排计算ActualSize& Usercontrol的高度:

itemsa.Measure(new System.Windows.Size(double.PositiveInfinity,     double.PositiveInfinity));
itemsa.Arrange(new Rect(0, 0, 400, itemsa.DesiredSize.Height));

此时Usercontrol未添加到Stackpanel。 400是我的用户控件不应超过的宽度,但确实如此,因为Textblock不会创建自动换行符。当我显示Book时,会创建换行符。

我该怎么做才能解决这个问题?

提前致谢。

3 个答案:

答案 0 :(得分:0)

不确定您是否正在寻找此项,但使用MaxHeight属性可以限制控件的增长。

一般情况下,没有必要覆盖测量和排列,布局系统非常强大,它为您提供了许多提供特定布局行为的container-controls

答案 1 :(得分:0)

为什么不将属性MaxHeight用于stackpanel?

ActualWidth和ActualHeight也会告诉你控件的实际大小。

您确定需要所有这些计算吗?我的猜测是使用自动调整大小的GridRows或类似的东西会更好。

答案 2 :(得分:0)

听起来我想要一个自定义面板以非常具体的方式进行布局。您可以从Panel继承一个新类,然后覆盖MeasureOverride和ArrangeOverride以确定可以添加的内容和位置。这也是您用来创建虚拟面板的方法,其中只创建了可见子项,并在滚动时销毁它们。

如果您对此感兴趣,请告诉我,我将编辑帖子并提供示例。