Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在渲染过程之前确定控件的大小_Wpf_Controls_Size - Fatal编程技术网

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

Wpf 在渲染过程之前确定控件的大小,wpf,controls,size,Wpf,Controls,Size,我有一个复合控件,由一个矩形和几个动态创建的标签组成(动态创建的,因为在设计期间我不知道应该显示多少标签)。标签的位置(边距)在运行时通过组合整个控件大小、通过依赖项属性传递的附加集合以及标签本身的高度来计算 不幸的是,在渲染一个标签之前,我并没有进入确定标签高度的方法ActualWidth和ActualHeight在显示标签之前为0,未设置宽度/高度,因为我希望标签根据其内容调整大小,DesiredSize返回0、正确大小或超出实际标签大小的大小(如2或3倍),RenderSize返回有效大小

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

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

我尝试调用标签上的
Measure()(所有标签都有相同的字体,并且只由数字组成,因此它们的大小应该差不多,但第一个大约有16个像素,第二个大约有36个像素,不过在渲染之后,
renderize
对这两个标签都有效)


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

您可以使用强制进行测量/布局传递。调用此方法后,
实际宽度和
实际高度将具有正确的值。

我对其进行了进一步测试,遇到了一些情况,甚至在调用父项和标签本身上的UpdateLayout之后-标签的实际高度为0.0。在渲染之前,似乎仍然没有确定对象高度的方法…到目前为止,您的答案似乎与解决方案最接近,因此我接受:)答案很好,但我想使用鼠标查找运行时屏幕大小的更改。