*在XAML中意味着什么

时间:2011-09-14 16:58:08

标签: wpf xaml expression-blend

XAML中的*含义是什么。我有一个宽度为400的网格。并将网格划分为3列。 * .4是什么意思?我认为这是可用空间的40%。因此,前两列将分别获得40%的百分比,其余的则由第三列获得。 但看起来,第三列占60%,前两个占20%。 这是如何工作的?

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

enter image description here

1 个答案:

答案 0 :(得分:13)

基本上,默认值是“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%。