Qual é o significado de * (asterisco) no XAML abaixo?
<ColumnDefinition Width="0.07*"/>
<Grid Height="100" HorizontalAlignment="Left"
Margin="102,134,0,0"
Name="grid1" VerticalAlignment="Top"
Width="354">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40*" />
<ColumnDefinition Width="314*" />
</Grid.ColumnDefinitions>
</Grid>
Respostas:
Ao definir uma coluna em uma grade WPF, você pode definir a largura para um dos três valores possíveis:
Auto
- a coluna será tão larga quanto necessário para caber seus filhos, ou*
(estrela) ocupar qualquer espaço restante disponívelO
*
é prefixado por um número (o padrão é 1 se nenhum número for especificado). O espaço disponível é dividido entre as colunas com estrela em proporção ao número do prefixo.Se você tem esta definição
A primeira coluna terá 7% do espaço total disponível e a segunda coluna receberá 93%. Por outro lado, se você tivesse esta definição:
A primeira coluna obteria 1/3 e a segunda 2/3 do espaço disponível.
No seu caso específico, onde a largura da grade é 354 e as proporções das duas colunas são 40 e 314, você obtém as seguintes larguras de coluna:
A largura da estrela é melhor usada quando a largura da grade não é fixa. Quando a grade é redimensionada, as colunas são dimensionadas proporcionalmente conforme especificado pela largura das estrelas. No seu caso, a largura da grade é fixa e você poderia facilmente ter usado colunas de largura fixa.
Se você deseja um layout onde a segunda coluna tem o dobro da largura da primeira e a terceira coluna tem o triplo da largura da primeira, você precisa desta definição:
Se a largura total da grade é 300, você obtém larguras de coluna 50, 100 e 150. Se a largura total da grade é 600, você obtém larguras de coluna 100, 200 e 300. E assim por diante.
fonte
Sua proporção de 0,07 em relação a qualquer outra coluna com largura de estrela - ou seja, se outra definição de coluna tem uma largura de 0,14, então essa coluna tem o dobro da largura = é tudo sobre rações
fonte
Ele cria tamanhos de coluna usando proporções. Se você tivesse outra definição,
<ColumnDefinition Width="0.03*"/>
a primeira coluna ocuparia 70% do espaço e a segunda ocuparia 30%.fonte
fonte