GridLength 结构

定义

表示显式支持 Star \ 大小调整和 自动 大小的控制逻辑的度量。

public value class GridLength
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct GridLength
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
public struct GridLength
Public Structure GridLength
<object property="doubleValue"/>
- or -
<object property="starSizing"/>
-or-
<object property="Auto"/>
继承
GridLength
属性

示例

此示例演示如何将 XAML 中的网格列宽度设置为资源或直接设置为 Width 属性值。

<Grid>
    <Grid.Resources>
        <GridLength x:Key="gridLength200">200</GridLength>
        <GridLength x:Key="gridLength2star">2*</GridLength>
    </Grid.Resources>
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="gridColumn0" Width="{StaticResource gridLength200}"/>
        <ColumnDefinition x:Name="gridColumn1" Width="200"/>
        <ColumnDefinition x:Name="gridColumn2" Width="Auto"/>
        <ColumnDefinition x:Name="gridColumn3" Width="3*"/>
        <ColumnDefinition x:Name="gridColumn4" Width="{StaticResource gridLength2star}"/>
        <ColumnDefinition x:Name="gridColumn5" Width="*"/>
    </Grid.ColumnDefinitions>
    <Border Background="Red" Grid.Column="0"/>
    <Border Background="Orange" Grid.Column="1"/>
    <Border Background="Yellow" Grid.Column="2" Width="100"/>
    <Border Background="Green" Grid.Column="3"/>
    <Border Background="Blue" Grid.Column="4"/>
    <Border Background="Violet" Grid.Column="5"/>
</Grid>

XAML 在 Visual Studio 设计器中生成此输出:

gridlength XAML 示例的呈现输出

下面介绍如何在代码中设置相同的值。 前两个网格长度是等效的,但第一个网格长度使用简化的构造函数。

gridColumn0.Width = new GridLength(200);
gridColumn1.Width = new GridLength(200, GridUnitType.Pixel);
gridColumn2.Width = new GridLength(0, GridUnitType.Auto);
gridColumn3.Width = new GridLength(3, GridUnitType.Star);
gridColumn4.Width = new GridLength(2, GridUnitType.Star);
gridColumn5.Width = new GridLength(1, GridUnitType.Star);

注解

ColumnDefinitionRowDefinition 等类型 对其某些属性使用 GridLength 值(ColumnDefinition.WidthRowDefinition.Height)。 这些属性值用于支持布局容器中可用空间的变量分布,例如 网格(以及派生类型的 Grid,如 VariableSizedWrapGrid)。

GridLength 可以描述三种大小调整模式之一:

  • 固定宽度。
  • 加权分布(大小调整)。
  • 自动 大小调整模式。

GridLength 值通常在 XAML 属性语法中声明。 在 XAML 中,加权分布是使用“*”符号声明的,前面是一个数字,该数字声明用于该 GridLength的权重因子。 加权分布选项也称为 星型调整

GridLength Value 保存的数据值和 GridUnitType 都是只读的。 如果要更改运行时采用 GridLength 的属性的值,则必须使用其中一个构造函数创建新值并替换以前的值。

大小调整

星型调整是一种约定,即 GridLength 具有一个数字值,该值指定加权因子与其他 GridLength 值。 使用星形调整值的任何 GridLength 值将可用空间除以考虑权重因素,并在应用任何固定宽度后进行评估。 如果任何星型都没有任何权重因素,则高度或宽度在它们之间相等。 默认权重因子为 1。

下表提供了一些星型调整结果示例。 对于这些示例,假定父 网格 的宽度为 600,并且有三列。

列 0 列 1 第 2 列 结果
100 100 * 100,100,400
100 * * 100,250,250
100 * 4* 100,100,400

在代码中,星形大小相当于 IsStartrueGridLengthGridUnitTypeStar 是应用的加权因子。

允许使用非整数加权因子;例如“.5*”。

自动调整大小

自动调整大小根据列或行中内容的大小均匀分配空间。 自动调整大小的确切逻辑由控件或类使用 GridLength 值实现。 通常,该类 Grid,因为它解释其 RowDefinitionColumnDefinition 组件。

XAML 语法说明

尽管可以将 GridLength 指定为对象元素,但不能将单个值(如 Value)指定为该对象元素的属性。 XAML 分析程序不支持为此结构设置 XAML 属性值。 相反,必须将值指定为 GridLength中的初始化文本。 有关 XAML 初始化文本的详细信息,请参阅 XAML 语法指南

GridLength 的投影和成员

如果使用 C#,则 GridLength 具有可用的非数据成员,并且其数据成员公开为只读属性,而不是字段。 请参阅 .NET API 浏览器中 GridLength

如果使用 C++/WinRTWindows 运行时C++模板库(WRL)编程,则只有数据成员字段作为 GridLength的成员存在,并且不能使用 .NET 投影的实用工具方法或属性。 C++代码可以访问 GridLengthHelper 类上存在的类似实用工具方法。

下表显示了 .NET 和 C++ 中可用的等效属性和方法。

.NET (GridLength C++(GridLengthHelper
GridLength(Double) FromPixels(Double)
GridLength(Double, GridUnitType) FromValueAndType(Double, GridUnitType)
自动 自动
equals Equals(GridLength、GridLength)
IsAbsolute GetIsAbsolute(GridLength)
IsAuto GetIsAuto(GridLength)
IsStar GetIsStar(GridLength)

字段

GridUnitType

GridUnitType 枚举的值,该枚举限定 Value 解释为度量值。

Value

此 GridLength 的度量值,这不一定是像素度量值。

适用于

另请参阅