WPF ColumnDefinition中*(星号)的含义?

时间:2011-08-05 13:12:18

标签: wpf xaml layout grid

下面的XAML中*(星号)是什么意思?

<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>

4 个答案:

答案 0 :(得分:150)

在WPF网格中定义列时,可以将宽度设置为三个可能值之一:

  • 固定宽度,
  • Auto - 列将根据需要加宽以适应其子项,或
  • *(星级)占用剩余空间

*以数字为前缀(如果未指定数字,则默认为1)。可用空间按照前缀编号的比例划分为已加星标的列。

如果你有这个定义

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>

第一列将获得可用总空间的7%,第二列将获得93%。另一方面,如果你有这个定义:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>

第一列将获得1/3,第二列将获得可用空间的2/3。


在特定情况下,网格的宽度为354,两列的比例为40和314,您将获得以下列宽:

First column width = 40/(40 + 314)*354 = 40
Second coulmn width = 314/(40 + 314)*354 = 314

当网格宽度不固定时,最好使用星形宽度。调整网格大小后,列将按照星形宽度的指定按比例缩放。在您的情况下,网格的宽度是固定的,您可以很容易地使用固定宽度列。

如果你想要一个布局,其中第二列是第一列的宽度,第三列的宽度是第一列的宽度的三倍,你需要这个定义:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="*"/>
  <ColumnDefinition Width="2*"/>
  <ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>

如果网格的总宽度为300,则会得到列宽50,100和150.如果网格的总宽度为600,则会得到列宽100,200和300.依此类推。

答案 1 :(得分:2)

它与任何其他星形宽度列的比率为0.07 - 即如果另一个ColomnDefinition的宽度为0.14,那么该列的宽度是其宽度的两倍=它的所有关于口粮

答案 2 :(得分:1)

使用比率创建列大小。如果你有另一个定义,如<ColumnDefinition Width="0.03*"/>,第一列将占用70%的空间,第二列将占用30%。

答案 3 :(得分:0)

  

[..]一个值,表示为可用空间的加权比例。