展开最后一个网格行以填充wpf应用程序中的窗口

时间:2013-11-12 16:20:59

标签: c# wpf

我在WPF应用程序中有以下网格设置。

  <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="220" />
            <RowDefinition Height="40" />
            <RowDefinition Height="80" />
            <RowDefinition Height="180*" />
        </Grid.RowDefinitions>
  <!-- some content -->
 </Grid>

我想要的是最后一行占用其父级可用的高度。但它似乎没有遵守最后一行定义中的'*'命令。

请注意,我希望修复所有其他行高..

这可能吗?如果是这样的话?任何帮助或指示表示赞赏..

3 个答案:

答案 0 :(得分:5)

在最后一行放置身高=“*”。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="220" />
        <RowDefinition Height="40" />
        <RowDefinition Height="80" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

     

答案 1 :(得分:2)

你所写的内容应该没问题(尽管@Bolu评论说,在这种情况下180*可以替换为*。如果最后一行中的内容没有扩展以填充可用的大小,我会怀疑以下之一:

  1. Grid可能嵌套在布局面板下方的某处,而布局面板不会安排其子项填充所有可用的垂直空间。例如,Grid小组的一个祖先是StackPanel?测试这是否是罪魁祸首的一个好方法是注释掉整个Grid并将其替换为具有易于区分的背景的Border(例如Magenta)并查看它是否占用您期望Grid填充的整个区域。

  2. 最后一行可能没有任何内容。您是否正确设置了正确的Grid.Row值?

  3. 您可能会覆盖最后一行内容的布局行为。您是否将内容的VerticalAlignment设置为Stretch以外的任何内容?

答案 2 :(得分:0)

从最后一行删除Height属性:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="220" />
        <RowDefinition Height="40" />
        <RowDefinition Height="80" />
        <RowDefinition/>
    </Grid.RowDefinitions>
<!-- some content -->
</Grid>