下面的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>
在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。依此类推。
[与其他任何星形宽度的列之比为0.07,即,如果另一个ColomnDefinition的宽度为0.14,则该列的宽度是其两倍=它的所有比率”]
它使用比率创建列大小。如果您有另一个定义,例如<ColumnDefinition Width="0.03*"/>
,则第一列将占用70%的空间,第二列将占用30%的空间。
[..]表示为可用空间的加权比例的值。