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

时间:2021-11-06 20:26:11

I'd like to have a Grid with a row on the top and bottom with either labels or buttons in them. In the middle I plan on using a ListBox. I want the ListBox to expand to use all the available space. It would be nice to not hard code the height of the other two rows. My XAML is below. How can I make the middle section expand automatically? Thanks.

我希望网格顶部和底部有一行,其中包含标签或按钮。在中间我打算使用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 个解决方案

#1


12  

Try setting the middle row to this...

尝试将中间行设置为此...

<RowDefinition Height="*" /> 

#2


3  

Replace the middle

替换中间

<RowDefinition Height="Auto" />

with

<RowDefinition Height="*" />

#1


12  

Try setting the middle row to this...

尝试将中间行设置为此...

<RowDefinition Height="*" /> 

#2


3  

Replace the middle

替换中间

<RowDefinition Height="Auto" />

with

<RowDefinition Height="*" />