在渲染过程之前确定控件的大小

时间:2011-05-17 10:09:18

标签: wpf controls size

我有一个由矩形和一些动态创建的标签组成的复合控件(动态,因为在设计时我不知道应该显示多少个标签)。标签的位置(边距)在运行时通过组合整个控件大小,通过依赖属性传递的附加集合以及标签本身的高度来评估。

不幸的是,在呈现标签高度之前,我没有采用确定性的方法来确定标签高度。显示标签前ActualWidthActualHeight为0,未设置宽度/高度,因为我希望标签根据其内容调整大小,DesiredSize返回0,正确大小或大小超过实际标签大小(如2或3次),RenderSize返回有效大小或0,它就像第一个标签返回有效大小和第二个 - 0.0,没有任何明显的原因。

我尝试在标签上调用Measure(),其中double.PositiveInfinity仅传递到达情境,当DesiredSize大于预期时(所有标签都具有相同的字体且只包含数字) ,所以它们都有相似的大小,但是第一个有~16个像素,第二个~~ 36,但是在渲染之后,RenderSize对它们都有效。

是否有确定性方法来检查所需的控件大小,仅基于其内容(而不是对齐/边距)之前在屏幕上呈现?

1 个答案:

答案 0 :(得分:13)

您可以使用UpdateLayout强制进行度量/布局传递。调用此方法后,ActualWidthActualHeight将具有正确的值。