我正在WPF平台中准备一个自定义控件,在该控件中,我正在使用内容呈现器来显示视图,并且试图使用文本块控件在内容呈现器内容上显示文本。对于文本块中的给定文本,我尝试使用用于放置文本块控件的测量方法来计算文本块的实际宽度和实际高度,但是它没有提供文本块控件的实际宽度和高度。这样文本块控件就不会显示在视图中。下面提供了代码段:this.CustomTextBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
[有人可以建议我如何计算WPF平台中控件的实际宽度和实际高度,还可以向我解释为什么测量方法未提供WPF平台中控件的实际宽度和实际高度?
我还附上下面的项目下载链接:[https://www.syncfusion.com/downloads/support/directtrac/general/ze/BViewWpf1629602448][DemoProject]
UIElement.Measure
是由框架的布局引擎执行的方法。Measure
在第一次布局遍历期间执行,并实际计算DesiredSize
,当调用Arrange
时在第二次布局遍历中使用。 Arrange
可以使用(取决于实现方式)DesiredSize
来安排其子元素。 Measure
对实际大小没有直接影响。它仅计算最大可用空间。传递给此方法的大小不是强制性的,因为它可以被测量算法覆盖。该参数被认为是最小可用空间。 如果要修改FrameworkElement
的大小,请设置Width
和Height
属性。
为了防止TextBlock
占据最大的可用水平空间,只需设置HorizontalAlignment
:
<!-- Use Padding to add additional space -->
<TextBlock Text="Minimum sized TextBlock"
HorizontalAlignment="Left" />