Compartilhar via


GridLength Estrutura

Definição

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

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

Exemplos

Este exemplo mostra como definir larguras de coluna de grade em XAML, seja como um recurso ou diretamente como um valor de Width propriedade.

<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 GridLength valores para algumas de suas propriedades (ColumnDefinition.Width e RowDefinition.Height). Esses valores de propriedade são usados para dar suporte à distribuição variável de 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 star).
  • Um modo de dimensionamento automático.

GridLength Os valores 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 star.

Os valores de dados mantidos por um GridLengthValue 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 estrela

O dimensionamento em estrela é uma convenção na qual um GridLength tem um valor numérico que especifica um fator ponderado versus outros GridLength valores. Todos GridLength os valores 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 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 star resultados de dimensionamento. 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 Result
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 GridLength valores . Normalmente, essa classe é Grid, pois interpreta seus componentes RowDefinition e ColumnDefinition .

Observações sobre a sintaxe XAML

Embora você possa especificar um como um GridLength 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 dentro do GridLength. Para obter mais informações sobre o texto de inicialização XAML, consulte Guia de sintaxe XAML.

Projeção e membros de GridLength

Se você estiver usando C#, GridLength terá membros que não são de dados disponíveis e seus membros de dados serã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 o Windows Runtime WRL (Biblioteca de Modelos C++), somente os campos de membro de dados existirão como membros de GridLengthe 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 os 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