WPF网格没有垂直拉伸

时间:2011-12-27 05:24:45

标签: c# wpf user-interface grid

我在主窗口中有以下Grid

<Grid Name="gridMain" Width="Auto" VerticalAlignment="Stretch" Height="Auto">
</Grid>

我在网格中动态添加UserControl。主窗口只有这个网格。我希望网格水平和垂直拉伸,并应填满整个窗口。网格水平拉伸但不垂直拉伸。知道为什么吗?我需要做什么才能使网格垂直拉伸?

修改

这是完整的XAML。

<Window x:Class="Sensitech.TurboValidator.UserControls.ConveyorBelt"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ConveyorBelt" Height="329" Width="714" xmlns:my="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit">
    <Grid Name="gridMain" Width="Auto" VerticalAlignment="Stretch" Height="Auto" Background="Cyan">

    </Grid>
</Window>

3 个答案:

答案 0 :(得分:13)

尝试将行高设置为*

<Grid Name="gridMain" >    
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
</Grid>

类似地定义ColumnDefinition并将Width设置为*

还要确保网格不是拉伸而不是用户控件。您可以通过为网格指定一些背景颜色来轻松完成此操作。

答案 1 :(得分:0)

xaml中有一个SizeChanged事件 例如SizeChanged =“ WindowSizeChanged” 使用此控件可以根据窗口大小将控件调整为所需的大小。

    private void WindowSizeChanged(object sender, SizeChangedEventArgs e)
    {
        Grid1.Height = this.ActualHeight - 40;
    }

“如果您告诉降落伞由xaml设计师打包,您会从飞机上跳下来吗?”

答案 2 :(得分:0)

在窗口根目录中使用此网格类。我给出这个答案,因为上面的答案都没有帮助我。

public class SpaceFiller : Grid
{
    protected override Size MeasureOverride(Size availableSize)
    {
        var size = base.MeasureOverride(availableSize);
        return new Size(size.Width, availableSize.Height);
    }
}