当窗口最大化时,将WPF网格调整为与窗口相同的部分大小

5

我在我的WPF应用程序中拥有一个基本的网格:

<Grid>
    <Grid Height="260" HorizontalAlignment="Left" Margin="24,25,0,0" Name="grid1" VerticalAlignment="Top" Width="452">
        <Border BorderBrush="Red" BorderThickness="6"></Border>  
    </Grid>
</Grid>

网格位于窗口中间。 当我最大化窗口时,我希望网格自动调整大小以适应窗口大小,并保持我指定的相同边距。 我该如何做? 我需要在resize事件中计算和调整整个大小吗?
我从这里得到了: enter image description here 到这里(我不想要这个): enter image description here 我希望网格按相同比例调整大小,但是充满整个屏幕。

当你说“相同部分”时,你是指完全相同的绝对宽度(25),还是你希望边距随着屏幕大小的变化成比例增加? - GazTheDestroyer
不,我希望网格的大小随着新窗口大小的增加而增加。当我最大化窗口后,我希望网格看起来像我附加的第一张图片,但是针对完全最大化的窗口。谢谢 :) - Rodniko
另外,您发布的XAML是否为整个窗口内容?您是否有画布或其他元素会破坏拉伸以适应行为? - GazTheDestroyer
我刚刚将snurre提供的完整代码粘贴到一个新窗口中,它可以正常最大化。你是否有一些样式或其他可能覆盖行为的东西?试试在全新的窗口中打开。 - GazTheDestroyer
1
同时在你的代码中去掉VerticalAlignment和HoriziontalAlignment。请注意,snurre的代码没有这些属性。 - GazTheDestroyer
显示剩余3条评论
2个回答

13

移除宽度和高度。

<Grid>
    <Grid Margin="24,25">
        <Border BorderBrush="Red" BorderThickness="6"></Border>  
    </Grid>
</Grid>

e: 添加第二个网格以使其与 OP 相同


3
是的,需要在您的代码中删除VerticalAlignment和HorizontalAlignment。 - GazTheDestroyer
你是对的,如果去掉宽度和高度,它就可以工作了。它之前不能工作是因为水平对齐和垂直对齐属性也不应该存在! - Rodniko

0

您可以使用以下方式将Grid嵌套在另一个Grid中:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="25" />
        <RowDefinition />
        <RowDefinition Height="25" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="25" />
        <ColumnDefinition />
        <ColumnDefinition Width="25" />
    </Grid.ColumnDefinitions>

    <!-- Main Grid -->
    <Grid Grid.Row="1" Grid.Column="1">

        <!-- Main Content -->
    </Grid>
</Grid>

这将允许您将所有内容放置在Main Grid中,同时保持所有边缘周围的25个像素的恒定边距。


它不起作用。我的问题是,当窗口调整大小时,如何将网格调整为窗口的大小(并保持边距)? - Rodniko
1
你不需要调整网格的大小。通过省略Width和Height属性,它会自动拉伸到包含元素(在这种情况下是窗口)。只需设置Margin为您想要的任何值,您就可以得到所需的结果。 - snurre
@Rodniko snurre是正确的,你需要省略WidthHeight属性。在WPF中,控件会自动拉伸以填充其容器,除非指定了对齐或大小。 - Samuel Slade
如果网格没有宽度和高度,它会变成左上角的小红点。即使我将窗口最大化,它仍然是一个红点。 我希望网格的大小能够随着窗口大小的改变而增长。当我最大化窗口后,我希望网格看起来像我附加的第一张图片,但针对完全最大化的窗口。 - Rodniko
是水平对齐和垂直对齐导致了网格变成了一个点。你是正确的,非常感谢 :) - Rodniko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接