我在主窗口中有以下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>
答案 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);
}
}