如何控制网格高度?

时间:2012-08-06 18:59:50

标签: wpf grid height sizing

我有一个包含2个子控件的网格。我有一个简单的堆栈面板和一个将驻留在网格中的ListBox:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="5" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <ListBox Name="lstGroups" Grid.Row="0" />
        <StackPanel Grid.Row="2" />
<Grid>

问题是我的ListBox渲染超过了分配给网格的可视屏幕区域。如何确保我的ListBox占用可用空间,但是它不会渲染到第二行,我需要一个垂直滚动条来查看所有内容?

1 个答案:

答案 0 :(得分:0)

你可能应该使用DockPanel。此外,您可以以编程方式设置列表框的高度,但这不是一个非常干净的方法。

<Window x:Class="MobilWPF.Windows.testWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="testWindow" Height="300" Width="300">
    <DockPanel>
        <StackPanel DockPanel.Dock="Bottom" >
            <TextBlock Text="blah"/>
        </StackPanel>
        <ListBox Name="lstGroups"  />
    </DockPanel>
</Window>


namespace MobilWPF.Windows
{
    /// <summary>
    /// Interaction logic for testWindow.xaml
    /// </summary>
    public partial class testWindow : Window
    {
        public testWindow()
        {
            InitializeComponent();

            for (int i = 0; i < 200; i++)
            {
                lstGroups.Items.Add(i.ToString()); 
            }
        }
    }
}