我有一个由一个矩形和一些动态创建的标签组成的复合控件(动态地,因为在设计时我不知道应该显示多少标签)。标签的位置(边距)在运行时通过结合整个控件大小、通过依赖属性传递的附加集合以及标签本身的高度来评估。
不幸的是,在渲染标签之前,我并没有采用确定性的方式来确定标签高度。 ActualWidth
和 ActualHeight
在显示标签之前为 0,未设置宽度/高度,因为我希望标签根据其内容自行调整大小,DesiredSize
返回 0、正确大小或超过实际标签大小的大小(如 2 或 3 倍),RenderSize
返回有效大小或 0,就像第一个标签返回有效大小和第二个标签 - 0.0,没有任何明显的原因。
我试过调用Measure()
在带有 double.PositiveInfinity 的标签上经过仅到达情况,当 DesiredSize
比预期的大得多(所有标签都具有相同的字体并且仅由数字组成,因此它们的大小应该更不相似,但首先有〜16像素,第二 - 〜36,尽管在渲染之后,RenderSize
是有效的对于他们两个)。
是否有一种确定的方法来检查所需的控件大小,仅基于其内容(而不是对齐/边距),然后再将其呈现在屏幕上?
最佳答案
您可以使用UpdateLayout强制测量/布局通过。调用此方法后ActualWidth
和 ActualHeight
将具有正确的值。
关于wpf - 在渲染过程之前确定控件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029299/