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


106

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

如果我的第二列宽度是第一列的两倍,第三列宽度是第一列的三倍,那么我该如何使用Astrik
Shashank,

Answers:


168

在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,您将获得以下列宽:

第一列宽度= 40 /(40 + 314)* 354 = 40
第二库仑宽度= 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。依此类推。


3

它与任何其他星型宽度列的比率为0.07,即,如果另一个ColomnDefinition的宽度为0.14,则该列是宽度的两倍=它的所有比率


1

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


0

[..]以可用空间的加权比例表示的值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.