Что * означает в XAML - PullRequest
       6

Что * означает в XAML

10 голосов
/ 14 сентября 2011

Что * означает в XAML. У меня есть сетка шириной 400. И разделил сетку на 3 столбца. Что означает * .4? Я думал, что это 40% доступного пространства. так что первые 2 столбца получат по 40% каждый, а остальные - третий. но похоже, что третий столбец занимает 60%, а первые два получают 20% каждый. Как это работает?

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width=".4*"/>
        <ColumnDefinition Width=".4*"/>
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
</Grid>

enter image description here

1 Ответ

13 голосов
/ 14 сентября 2011

Как правило, по умолчанию используется значение «1 *», поэтому то, что у вас есть выше, эффективно:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="0.4*" />
    <ColumnDefinition Width="0.4*" />
    <ColumnDefinition Width="1.0*" />
</Grid.ColumnDefinitions>

Интервал сетки звезд ( GridUnitType.Star ) пропорционально распределяет пространство.В вашем случае у вас есть 1,8 (1,0 + 0,4 + 0,4), поэтому первые два столбца получают 22,2% (0,4 / 1,8) от выделенной им ширины.

Чтобы получить то, что вы хотите, вы можете использовать:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="0.4*" />
    <ColumnDefinition Width="0.4*" />
    <ColumnDefinition Width="0.2*" />
</Grid.ColumnDefinitions>

Устанавливает итоговое значение 1,0, поэтому каждый становится процентом.

Обратите внимание, что это даст точно такой же результат , как и при выполнении.:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="40*" />
    <ColumnDefinition Width="40*" />
    <ColumnDefinition Width="20*" />
</Grid.ColumnDefinitions>

Поскольку общие пропорции теперь поделены на общее количество (100), все равно получается 40%, 40%, 20%.

...