StackPanel
中所有项的高度。以下是它们之间的区别:
Height
- 获取或设置元素建议的高度。ActualHeight
- 获取此元素的呈现高度。(只读)ExtentHeight
- 获取包含范围的垂直大小的值。(只读)ViewportHeight
- 获取包含内容视口的垂直大小的值。(只读)DesiredSize
- 获取此元素在布局过程的测量传递期间计算的大小。(只读)RenderSize
- 获取(或设置,但请参见备注)此元素的最终呈现大小。
来自 MSDN:
高度
获取或设置元素的建议高度。属性值:
Double
- 元素的高度,以设备独立单位表示(每单位 1/96 英寸)。元素的高度,以设备独立单位表示(每单位 1/96 英寸)。
ActualHeight (只读)
获取该元素的渲染高度。
属性值: Double
- 元素的高度,以设备无关单位(每单位1/96英寸)表示。
该属性是基于其他高度输入和布局系统的计算值。该值由布局系统本身设置,基于实际的渲染过程,并且可能会略微滞后于作为输入更改基础的Height等属性的设置值。
由于ActualHeight是一个计算值,因此您应该知道,由于布局系统的各种操作,可能会有多个或增量报告的更改。布局系统可能正在计算子元素所需的测量空间、父元素的约束等。
ExtentHeight (只读)
获取包含范围的垂直大小的值。属性高度:
Double
- 表示范围垂直大小的 Double。返回值以设备独立像素描述。
ViewportHeight (只读)
获取包含内容视口的垂直大小的值。属性值:
Double
- 表示内容视口垂直大小的 Double 值。返回的值以设备独立像素描述。
DesiredSize (只读)
获取元素在布局过程中计算出的尺寸。
属性值: Size
- 计算出的尺寸,将成为排列过程的期望尺寸。
仅当IsMeasureValid属性的值为true时,此属性返回的值才是有效的测量值。
在实现布局行为重写(如ArrangeOverride、MeasureOverride或OnRender)时,通常会检查DesiredSize作为测量因素之一(在OnRender情况下,您可能会检查RenderSize,但这取决于您的实现)。根据情况,DesiredSize可能会完全受到您的实现逻辑的尊重,也可能会应用于DesiredSize的约束,并且这些约束还可能改变父元素或子元素的其他特性。例如,支持可滚动区域的控件(但选择不从WPF框架级别的控件派生,而是自己实现)可以将可用大小与DesiredSize进行比较。然后,该控件可以设置一个内部状态,在UI中为该控件启用滚动条。或者,在某些情况下,也可能会忽略DesiredSize。
RenderSize获取此元素的最终呈现大小。
属性值:
Size
- 此元素的呈现大小。此属性可用于检查布局系统重写(如OnRender或GetLayoutClip)中适用的呈现大小。
更常见的情况是使用类处理程序重写或OnRenderSizeChanged事件处理SizeChanged事件。
在我的情况下,我想知道StackPanel
中所有项的期望高度。
换句话说:我想知道在绘制之前StackPanel
中所有项的高度,并且如果它们溢出面板,我将
- 删除
- 缩小
- 缩放
- 调整
项目以确保它们适合StackPanel。
这意味着我可能想在调整大小事件(SizeChanged?LayoutUpdated?)期间获取期望高度(ExtentHeight?DesiredSize?),在任何绘图发生之前(因此更快)。
这些属性中的大多数都返回零;因此,显然有一些我不知道并且未在文档中解释这些属性意味着什么的理解。