XAML ColumnDefinition 中 * (星号)的含义是什么?

下面的 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>
70340 次浏览

Its 0.07 ratio to any other star-width column - i.e. if another ColomnDefinition has a Width of 0.14 then that column is double the width = its all about rations

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

在 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。诸如此类。

用可用空间的加权比例表示的值。