共用方式為


GridLength 結構

定義

表示明確支援 StarAuto 重設大小之控制邏輯的度量。

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等衍生類型的 Grid)。

GridLength 可以描述三種調整模式之一:

  • 固定寬度。
  • 加權分佈(星形重設大小)。
  • 自動 重設大小模式。

GridLength 值通常會在 XAML 屬性語法中宣告。 在 XAML 中,加權分佈是使用 「*」 符號來宣告,前面是宣告要用於該 GridLength之加權因數的數位。 加權分配選項也稱為 星形重設大小

Value 和 gridUnitType 所持有的數據值都是唯讀的。 如果您想要變更運行時間接受 GridLength 的屬性值,您必須使用其中一個建構函式建立新的值,並取代先前的值。

星形重設大小

星形重設大小是一種慣例,其中 GridLength 具有指定加權因數與其他 GridLength 值的數位值。 任何 GridLength 使用星號重設大小的值會分割可用空間、考慮加權因數,並在套用任何固定寬度之後進行評估。 如果沒有任何星形重設大小有加權因素,則高度或寬度會平均除以其中。 默認加權因數為 1。

下表提供星形重設大小結果的一些範例。 在這些範例中,假設父 Grid 的固定寬度為 600,而且有三個數據行。

欄 0 欄 1 欄 2 結果
100 100 * 100,100,400
100 * * 100,250,250
100 * 4* 100,100,400

在程序代碼中,星號重設大小相當於 IsStartrueGridLengthGridUnitTypeStar,而 Value 是套用的加權因數。

允許非整數加權因數;例如,“.5*”。

自動重設大小

自動重設大小會根據數據行或數據列內的內容大小平均分散空間。 自動重設大小的確切邏輯是由控件或類別使用 GridLength 值實作。 類別通常是 Grid,因為它會解譯其 RowDefinition,並 ColumnDefinition 元件。

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 的量值,這不一定是圖元量值。

適用於

另請參閱