UIElement.DesiredSize 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public:
property Size DesiredSize { Size get(); };
Size DesiredSize();
public Size DesiredSize { get; }
var size = uIElement.desiredSize;
Public ReadOnly Property DesiredSize As Size
属性值
此 UIElement 在布局过程的度量传递期间计算的大小。
示例
此示例查询 DesiredSize 作为 ArrangeOverride 实现的子迭代的一部分。
// Second arrange all children and return final size of panel
protected override Size ArrangeOverride(Size finalSize)
{
// Get the collection of children
UIElementCollection mychildren = Children;
// Get total number of children
int count = mychildren.Count;
// Arrange children
// We're only allowing 9 children in this panel. More children will get a 0x0 layout slot.
int i;
for (i = 0; i < 9; i++)
{
// Get (left, top) origin point for the element in the 3x3 block
Point cellOrigin = GetOrigin(i, 3, new Size(100, 100));
// Arrange child
// Get desired height and width. This will not be larger than 100x100 as set in MeasureOverride.
double dw = mychildren[i].DesiredSize.Width;
double dh = mychildren[i].DesiredSize.Height;
mychildren[i].Arrange(new Rect(cellOrigin.X, cellOrigin.Y, dw, dh));
}
// Give the remaining children a 0x0 layout slot
for (i = 9; i < count; i++)
{
mychildren[i].Arrange(new Rect(0, 0, 0, 0));
}
// Return final size of the panel
return new Size(300, 300);
}
注解
实现 Layout 行为替代(如 ArrangeOverride 或 MeasureOverride )时,通常将 DesiredSize 检查为度量因素之 一。 根据父容器的布局逻辑,可以完全遵循 DesiredSize,可能应用对 DesiredSize 的约束,并且此类约束也可能更改父元素或子元素的其他特征。 例如,支持可滚动区域的控件 (但选择不从已启用可滚动区域的控件派生,) 可以将可用大小与 DesiredSize 进行比较。 然后,控件可以设置内部状态,以便在 UI 中为该控件启用滚动条。 或者,可以忽略 DesiredSize,并且元素始终获取一个布局,该布局的大小由其他注意事项(例如检查附加的属性值)调整。
DesiredSize 将不包含有用的值,除非至少有一个“度量”的布局传递已在 元素上运行。
DesiredSize 实际上仅用于定义自己的布局替代方法时使用。 如果只是对运行时应用 UI 中元素的大小感兴趣,则应改用 ActualWidth 和 ActualHeight 属性。 如果某个元素受到动态布局技术(如网格单元格大小star调整)的影响,则可以通过这种方式检查大小。 仅当在布局运行后肯定为时,才依赖于 ActualWidth 和 ActualHeight 值:例如,在 加载 事件中,或由用户操作触发,而用户操作仅在 UI 最初呈现后才能执行。
适用于
另请参阅
- ArrangeOverride(Size)
- MeasureOverride(Size)
- Arrange(Rect)
- <xref:Microsoft.UI.Xaml.UIElement.Measure(Windows.Foundation.Size)%0a>
- Measure(Size)