我有两行这样的:
<Grid.RowDefinitions>
<RowDefinition Height="85.7*" />
<RowDefinition Height="14.3*" />
</Grid.RowDefinitions>
第一个是空的,第二个包含一个组合框:
<ComboBox Grid.Row="1" Grid.RowSpan="1" ItemsSource="{Binding Names}" SelectedIndex="{Binding NameIndex}"/>
虽然我指定第二行的高度应该只有 14.3%,但两行的高度相等,为 50%。也许我在这里缺少一些概念?
完整代码:
<ListViewItem>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.857*" />
<RowDefinition Height="0.143*" />
</Grid.RowDefinitions>
<Image Name="thumbImage" Grid.Row="0" Grid.RowSpan="2" Stretch="UniformToFill" Source="{Binding MainThumbImagePath}"/>
<Image Name="contTitleImage" Grid.Row="0" Grid.RowSpan="2" Stretch="UniformToFill" Source="{Binding SlideTitleImagePath}"></Image>
<ComboBox Name="Names" Grid.Row="1" Grid.RowSpan="1" SelectedIndex="{Binding NameIndex}"/>
</Grid>
</ListViewItem>
回应评论
但是,要求是图片占用整个项目空间,并且组合框位于其顶部,并覆盖底部图片的一小部分
不要为了这些事情而玩RowSpan。请改用嵌套网格:
<Grid>
<Image x:Name="FullSpaceContent"/>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="857*"/>
<RowDefinition Height="143*"/>
</Grid.RowDefinitions>
<ComboBox Grid.Row="1" x:Name="BottomPartContentOverlappingTheImage"/>
</Grid>
</Grid>
只需确保外部网格大小适合图像,并且内部网格大小跨越其父大小。
假设您有允许占用所有可用空间的Grid
,您应该有这样的东西:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.143*"/>
<RowDefinition Height="0.857*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
</Grid>
我的电脑显示的结果似乎与其他电脑不同。如果我放0.143*
,那么就使用了可用空间的 14.3%。因此,如果我们有 2 个项目,那么该行将占用可用屏幕的 14.3% 的 50%。但是,如果我指定14.3*
它占用屏幕可用 143% 的 50%。
编辑
根据MSDN,网格的星形度量定义为:
星形大小用于按加权比例分配可用空间。 在可扩展应用程序标记语言 (XAML( 中,星号值表示为 * 或 2*。在第一种情况下,行或列将接收可用空间的一倍;在第二种情况下,行或列将接收两倍的可用空间,依此类推。