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

标签 wpf controls size

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

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

我试过调用Measure()在带有 double.PositiveInfinity 的标签上经过仅到达情况,当 DesiredSize比预期的大得多(所有标签都具有相同的字体并且仅由数字组成,因此它们的大小应该更不相似,但首先有〜16像素,第二 - 〜36,尽管在渲染之后,RenderSize是有效的对于他们两个)。

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

最佳答案

您可以使用UpdateLayout强制测量/布局通过。调用此方法后ActualWidthActualHeight将具有正确的值。

关于wpf - 在渲染过程之前确定控件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029299/

相关文章:

c# - 如何让文本适合 WPF 中的文本 block

c# - WPF 的有效拖放启用 ListView 实现?

javascript - 当 mp4 是唯一来源时,自定义 HTML5 视频控件不起作用

java - TrueZip - 如何获取 Zip 存档中文件夹的大小

wpf文本框平面边框样式

c# - 如何为 Prism 7 应用创建 Spec-Flow 测试?

vb.net - 如何在 Visual Basic 2010 中引用带有变量的控件?

css - 响应式网站文本对齐问题

linux - 在 Linux 中查找/重命名大文件

c# - 当绑定(bind)属性声明为接口(interface)类型与类类型时,WPF 绑定(bind)行为不同?