*在XAML中意味着什么

kat*_*e77 10 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>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ree*_*sey 13

基本上,默认值是"1*",所以你有效的是:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="0.4*" />
    <ColumnDefinition Width="0.4*" />
    <ColumnDefinition Width="1.0*" />
</Grid.ColumnDefinitions>
Run Code Online (Sandbox Code Playgroud)

星形网格间距(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>
Run Code Online (Sandbox Code Playgroud)

这将总数设置为1.0,因此每个都变为百分比.

请注意,这将产生与执行完全相同的结果:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="40*" />
    <ColumnDefinition Width="40*" />
    <ColumnDefinition Width="20*" />
</Grid.ColumnDefinitions>
Run Code Online (Sandbox Code Playgroud)

由于总比例现在除以总数(100),仍然给出40%,40%,20%.