GridLength 结构

定义

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

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

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

此示例演示如何在 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 ()中可用 空间的变量 分布,以及 Grid 的派生类型(如 VariableSizedWrapGrid) )。

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

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

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

GridLength (ValueGridUnitType) 保留的数据值都是只读的。 如果要更改在运行时采用 GridLength 的属性的值,则必须使用构造函数之一创建新值,并替换以前的值。

星号调整

星形大小调整是一种约定,其中 GridLength 具有一个数字值,该值指定加权因子与其他 GridLength 值。 使用star大小调整的任何 GridLength 值将划分可用空间、考虑权重因素,并在应用任何固定宽度后进行计算。 如果star大小没有权重因素,则高度或宽度在它们之间平均划分。 默认权重因子为 1。

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

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

在代码中,star大小调整等效于 GridLength,其中 IsStartrueGridUnitTypeStarValue 是应用的加权因子。

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

自动调整大小

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

XAML 语法说明

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

投影和 GridLength 的成员

如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) ,或 Visual C++ 组件扩展 (C++/CX) ,则 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)
Auto Auto
等于 等于 (GridLength、GridLength)
IsAbsolute GetIsAbsolute (GridLength)
IsAuto GetIsAuto (GridLength)
IsStar GetIsStar (GridLength)

字段

GridUnitType

GridUnitType 枚举的值,用于限定 Value 如何解释为度量值。

Value

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

适用于

另请参阅