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:

отображаемые выходные данные примера 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). Эти значения свойств используются для поддержки распределения доступного пространства в контейнерах макетов, таких как Grid (а также производных типов Grid , таких как VariableSizedWrapGrid).

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

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

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

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

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

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

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

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

В коде размер star эквивалентен GridLength, где IsStar имеет значение true, GridUnitTypeStar, а Value — взвешиваемый коэффициент.

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

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

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

Примечания по синтаксису XAML

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

Проекция и элементы GridLength

Если вы используете язык Microsoft .NET (C# или Microsoft Visual Basic) или расширения компонентов Visual C++ (C++/CX), 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

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

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

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