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:

отрисованные выходные данные примера XAML gridlength

Вот как задать те же значения в коде. Первые две длины сетки эквивалентны, но первый использует упрощенный конструктор.

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);

Комментарии

Такие типы, как ColumnDefinition и RowDefinition используют значения GridLength для некоторых их свойств (ColumnDefinition.Width и RowDefinition.Height). Эти значения свойств используются для поддержки распределения доступного пространства в контейнерах макетов, таких как сетки (а также производные типы , такие как VariableSizedWrapGrid).

GridLength может описать один из трех режимов для изменения размера:

  • Фиксированная ширина.
  • Взвешемое распределение (размер звезды).
  • Режим автоматического размера .

GridLength значения обычно объявляются в синтаксисе атрибута XAML. В XAML взвешемое распределение объявляется с помощью символа "*", предшествующего числу, которое объявляет коэффициент весового значения, используемого для этого GridLength. Параметр взвешированного распределения также известен как размер звезды.

Значения данных, удерживаемые значения , и GridUnitType доступны только для чтения. Если вы хотите изменить значение свойства, которое принимает GridLength во время выполнения, необходимо создать новое значение с помощью одного из конструкторов и заменить предыдущее значение.

Размер звезды

Размер звезды — это соглашение, в котором GridLength имеет числовое значение, указывающее взвешанный фактор и другие значения GridLength. Любые GridLength значения, использующие размер звезды, разделяют доступное пространство, учитывая факторы весового значения и оценивая после применения каких-либо фиксированных ширин. Если ни один из размеров звезд не имеет весовых факторов, высота или ширина делится одинаково между ними. Коэффициент весового значения по умолчанию равен 1.

В этой таблице приведены некоторые примеры результатов изменения размера звезд. В этих примерах предположим, что родительский сетки имеет фиксированную ширину 600, а также три столбца.

Столбец 0 Столбец 1 Столбец 2 Результат
100 100 * 100,100,400
100 * * 100,250,250
100 * 4* 100,100,400

В коде размер звезд эквивалентен GridLength, где trueIsStar , GridUnitTypeStar, а значение является взвешанным фактором.

Допустимы не целочисленные факторы весовых значений; например, ".5*".

Автоматическое изменение размера

Автоматическое изменение размера распределяет пространство равномерно на основе размера содержимого, который находится в столбце или строке. Точную логику автоматического изменения размера реализует элемент управления или класс с помощью значений GridLength. Как правило, этот класс Grid, так как он интерпретирует его RowDefinition и компоненты ColumnDefinition.

Заметки о синтаксисе XAML

Хотя можно указать GridLength в качестве элемента объекта, нельзя указать отдельные значения, например Value, в качестве атрибутов этого элемента объекта. Средство синтаксического анализа XAML не поддерживает настройку значений атрибутов XAML для этой структуры. Вместо этого необходимо указать значения в виде текста инициализации в GridLength. Дополнительные сведения о тексте инициализации XAML см. в руководстве по синтаксису XAML .

Проекция и члены GridLength

Если вы используете C#, GridLength имеет доступные не данные, а его члены данных предоставляются как свойства только для чтения, а не поля. См. GridLength в браузере API .NET.

Если вы программируются с помощью C++/WinRT или библиотеки шаблонов среды выполнения Windows C++ (WRL), то только поля элементов данных существуют как члены GridLength, и нельзя использовать служебные методы или свойства проекции .NET. Код C++ может получить доступ к аналогичным методам служебной программы, существующим в классе GridLengthHelper.

В этой таблице показаны эквивалентные свойства и методы, доступные в .NET и C++.

.NET (GridLength) C++ (GridLengthHelper)
GridLength(Double) FromPixels(Double)
GridLength(Double, GridUnitType) FromValueAndType(Double, GridUnitType)
автоза автоза
Равно Equals(GridLength, GridLength)
IsAbsolute GetIsAbsolute(GridLength)
IsAuto GetIsAuto(GridLength)
IsStar GetIsStar(GridLength)

Поля

GridUnitType

Значение перечисления GridUnitType, которое определяет, как Value интерпретируется как мера.

Value

Мера для этого GridLength, которая не обязательно является мерой пикселя.

Применяется к

См. также раздел