WPF网格布局面板行高设置为“自动”

11

我想要一个包含位于顶部和底部的标签或按钮的网格。我计划在中间使用ListBox。我希望ListBox可以扩展以使用所有可用空间。最好不要硬编码其他两行的高度。以下是我的XAML代码。如何使中间部分自动扩展?谢谢。

<UserControl x:Class="WpfApplication1.UserControl1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Label Grid.Row="0"
           Grid.ColumnSpan="3"
           Content="Top Row" />

    <ListBox Grid.Row="1"
             Grid.ColumnSpan="3" />

    <Label Grid.Row="2"
           Grid.ColumnSpan="3"
           Content="Bottom Row" />
</Grid>

2个回答

18

尝试将中间行设置为这个...

<RowDefinition Height="*" /> 

2
@Nate。 “*” 快捷方式甚至比这更复杂。在这个例子中,您不需要更多的东西,但是如果您有一个需要多行或多列以不同比例扩展的复杂网格,则可能会为其中一个设置“2 *”,另一个则为“5 ”。如果您将它们都留在“”(这是一种表示1 *的快捷方式),则两行将平均分配扩展空间。干杯 - Berryl
谢谢Berryl。这非常有趣。 - Nate

5
替换中间字符
<RowDefinition Height="Auto" />

使用

<RowDefinition Height="*" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接