GridLength Estrutura

Definição

Representa uma medida para a lógica de controle que dá suporte explicitamente ao dimensionamento star (*) e ao dimensionamento automático.

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"/>
Herança
GridLength
Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Exemplos

Este exemplo mostra como definir larguras de coluna de grade em XAML, como um recurso ou diretamente como um valor de propriedade 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>

O XAML produz essa saída no designer do Visual Studio:

saída renderizada do exemplo de XAML gridlength

Veja como definir os mesmos valores no código. Os dois primeiros comprimentos de grade são equivalentes, mas o primeiro usa o construtor simplificado.

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

Comentários

Tipos como ColumnDefinition e RowDefinition usam valores GridLength para algumas de suas propriedades (ColumnDefinition.Width e RowDefinition.Height). Esses valores de propriedade são usados para dar suporte à distribuição variável do espaço disponível em contêineres de layout, como Grid (e também tipos derivados de Grid , como VariableSizedWrapGrid).

Um GridLength pode descrever um dos três modos para dimensionamento:

  • Uma largura fixa.
  • Uma distribuição ponderada (dimensionamento de star).
  • Um modo de dimensionamento "Automático".

Os valores gridLength normalmente são declarados na sintaxe do atributo XAML. Em XAML, a distribuição ponderada é declarada usando um símbolo "*", precedido por um número que declara o fator de ponderação a ser usado para esse GridLength. A opção de distribuição ponderada também é conhecida como dimensionamento de star.

Os valores de dados mantidos por um GridLength (Value e GridUnitType) são somente leitura. Se você quiser alterar o valor de uma propriedade que usa um GridLength em tempo de execução, precisará criar um novo valor usando um dos construtores e substituir o valor anterior.

Dimensionamento de estrelas

O dimensionamento de estrelas é uma convenção na qual um GridLength tem um valor numérico que especifica um fator ponderado em comparação com outros valores GridLength. Todos os valores GridLength que usam star dimensionamento dividem o espaço disponível, contabilizando os fatores de ponderação e avaliando após a aplicação de larguras fixas. Se nenhum dos dimensionamentos de star tiver fatores de ponderação, a altura ou largura será dividida igualmente entre eles. O fator de ponderação padrão é 1.

Esta tabela fornece alguns exemplos de resultados de dimensionamento de star. Para esses exemplos, suponha que a Grade pai tenha uma largura fixa de 600 e que haja três colunas.

Coluna 0 Coluna 1 Coluna 2 Resultado
100 100 * 100,100,400
100 * * 100,250,250
100 * 4* 100,100,400

No código, um dimensionamento de star é equivalente a um GridLength em que IsStar é true, GridUnitType é Star e Value é o fator ponderado aplicado.

Fatores de ponderação não inteiros são permitidos; por exemplo, ".5*".

Dimensionamento automático

O dimensionamento automático distribui espaço uniformemente com base no tamanho do conteúdo que está dentro de uma coluna ou linha. A lógica exata para dimensionamento automático é implementada pelo controle ou classe usando os valores GridLength. Normalmente, essa classe é Grid, pois interpreta seus componentes RowDefinition e ColumnDefinition .

Anotações sobre a sintaxe XAML

Embora você possa especificar um GridLength como um elemento de objeto, não é possível especificar os valores individuais, como Value, como atributos desse elemento de objeto. O analisador XAML não dá suporte à definição de valores de atributo XAML para essa estrutura. Em vez disso, você deve especificar os valores como texto de inicialização no GridLength. Para obter mais informações sobre o texto de inicialização XAML, consulte Guia de sintaxe XAML.

Projeção e membros do GridLength

Se você estiver usando uma linguagem Microsoft .NET (C# ou Microsoft Visual Basic) ou extensões de componente do Visual C++ (C++/CX), o GridLength tem membros que não são de dados disponíveis e seus membros de dados são expostos como propriedades somente leitura, não campos. Consulte GridLength no Navegador de API do .NET.

Se você estiver programando com C++/WinRT ou a WRL (Biblioteca de Modelos Windows Runtime C++), somente os campos de membro de dados existirão como membros do GridLength e você não poderá usar os métodos ou propriedades do utilitário da projeção do .NET. O código C++ pode acessar métodos utilitários semelhantes que existem na classe GridLengthHelper .

Esta tabela mostra as propriedades e métodos equivalentes disponíveis no .NET e no C++.

.NET (GridLength) C++ (GridLengthHelper)
GridLength(Double) FromPixels(Double)
GridLength(Double, GridUnitType) FromValueAndType(Double, GridUnitType)
Auto Auto
Igual a Equals(GridLength, GridLength)
Isabsolute GetIsAbsolute(GridLength)
IsAuto GetIsAuto(GridLength)
IsStar GetIsStar(GridLength)

Campos

GridUnitType

Um valor da enumeração GridUnitType que qualifica como Value é interpretado como uma medida.

Value

A medida para esse GridLength, que não é necessariamente uma medida de pixel.

Aplica-se a

Confira também