我的WPF项目中的窗口控件存在问题。我不知道如何拉伸(调整大小)这个窗口或内部的网格。我尝试附加属性HorizontalContentAlignment =" Stretch"和VerticalContentAlignment ="拉伸"两个控件都一致,但没有。你知道我错了吗?
这是我的XAML的一部分:
窗口
Title="MyWindow" AllowsTransparency="True" Background="Transparent" WindowStyle="None"
<Grid x:Name="mainGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Border x:Name="mainBorder" Background="{DynamicResource ShellBackground}" CornerRadius="15" BorderThickness="3" Margin="0,0,10,9">
<Grid Background="{DynamicResource BrandingBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
...
</Grid>
</Grid>
/窗
答案 0 :(得分:0)
正如@Shoe在评论中正确暗示的那样,为了让Grid
完全填充其父级空间,其至少一个列和行的维度必须设置为"*"
。从MSDN上的Grid
类页面:
Grid中定义的列和行可以利用Star大小调整来按比例分配剩余空间。选择“星形”作为行或列的高度或宽度时,该列或行将接收剩余可用空间的加权比例。这与Auto相反,后者根据列或行中内容的大小均匀分配空间。
在此示例中(取自WPF Tutorials.net上的Grid Panel页面),只有Height
将填充来自父级的完整Height
,因为它使用{{1在其中一行中... "*"
的{{1}}将取决于第一列中的内容,因为Width
设置为Grid
:< / p>
Width
答案 1 :(得分:0)
使用RowDefinition Height =“*”
我希望下面的内容符合您的要求:
<Grid x:Name="mainGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Border x:Name="mainBorder" Background="blue" CornerRadius="15" BorderThickness="3" Margin="0,0,10,9">
<Grid Background="Red" Margin="20,20,20,20">
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="123" Grid.Row="0"></TextBlock>
<TextBlock Text="345" Grid.Row="1"></TextBlock>
<TextBlock Text="678" Grid.Row="2"></TextBlock>
<TextBlock Text="910" Grid.Row="3"></TextBlock>
</Grid>
</Border>
</Grid>