创建一个完整大小的WPF网格
本文关键字:WPF 网格 一个 创建 | 更新日期: 2023-09-27 18:25:26
我正在尝试将一个有4个单元格的wpf网格一直放在屏幕上,使单元格的内容等分,但我在做这件事时遇到了问题…这是代码:
<StackPanel x:Name="MainStackPanel" HorizontalAlignment="Center" Orientation="Vertical">
<StackPanel.Resources>
<Style TargetType="Rectangle">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Height" Value="Auto"/>
</Style>
</StackPanel.Resources>
<Grid x:Name="Control1" HorizontalAlignment="Center" Height="150">
<Grid.Resources>
<Style TargetType="Rectangle">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Height" Value="Auto"/>
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Rectangle Fill="Red" Grid.Row="0" Grid.Column="1"/>
<Rectangle Fill="Blue" Grid.Row="0" Grid.Column="2"/>
<Rectangle Fill="Green" Grid.Row="1" Grid.Column="2"/>
<Rectangle Fill="Yellow" Grid.Row="1" Grid.Column="1"/>
</Grid>
</StackPanel>
请让我知道我该怎么做。。。或者我做错了什么。。。
如果你想要一个有四个等距单元格的网格,那么你可以这样做。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
这将创建一个2x2网格,如果调整屏幕大小,该网格将自动调整大小。在您的示例中,您的网格位于堆栈面板内部,因此它只会填充堆栈面板的大小。如果你想要一个网格用于整个屏幕,你需要把你的网格作为你的第一个容器,并设置它的约束,如上所示。
您正在使用"自动"调整大小属性。在这种情况下,如果您希望它被等分并占据整个空间,那么您将希望在行和列定义中都使用"*"。看看Samuel对这个相关问题的回答。