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

Spo*_*ook 8 size wpf controls

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

不幸的是,在渲染之前,我没有采用确定性的方法来确定标签高度.ActualWidth并且ActualHeight被显示在标签0之前,宽度/高度没有设置,因为我希望标签的大小自己立足于自己的内容,DesiredSize返回为0,正确的尺寸或大小超过实际标签尺寸(如2〜3次),RenderSize返回有效大小或0,它就像第一个标签返回有效大小和第二个 - 0.0,没有任何明显的原因.

我试过调用Measure()带有double.PositiveInfinity的标签只是为了达到这种情况,当时的DesiredSize方式比预期的要大(所有标签都有相同的字体,只包含数字,所以它们的大小都要小得多,但首先有~16像素,第二 - ~36,虽然渲染后,RenderSize对他们两个都有效).

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

Col*_*inE 13

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

  • 我进一步测试了它并遇到了一些情况,即使在父级和标签本身上调用UpdateLayout之后 - 标签的ActualHeight为0.0.在渲染之前似乎还没有确定方法来确定对象的高度...... (6认同)