【问题标题】:resize a WPF grid when window maximized to same portions as the window当窗口最大化到与窗口相同的部分时调整 WPF 网格的大小
【发布时间】:2012-01-26 00:09:16
【问题描述】:

我的 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 事件中计算和调整整个事物的大小吗?

我从中得到:

到这个(我不想要这个):

我希望网格调整为与原来相同的部分,但要全屏。

【问题讨论】:

  • 当您说“相同部分”时,您是指完全相同的绝对宽度 (25) 还是您希望边距与屏幕大小成比例增加?
  • 不,不,我希望网格的大小增长到新窗口大小的大小。我希望,在我最大化窗口之后,网格看起来像我附加的第一张图像,但对于一个完全最大化的窗口。谢谢:)
  • 等等,你说的是边距还是边框粗细?我不明白你的意思。据我所知,每个人似乎都回答了你的问题。
  • 另外,您发布的 XAML 是整个窗口内容吗?您是否有画布或其他元素会破坏拉伸以适应行为?
  • 还会丢失代码中的 VerticalAlignment 和 HoriziontalAlignment。请注意,snure 没有。

标签: wpf grid resize


【解决方案1】:

移除宽度和高度。

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

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

【讨论】:

  • 是的。丢失代码中的 VerticalAlignment 和 HoriziontalAlignment
  • 你是对的,如果你去掉宽度和高度,它就可以工作。它不起作用,因为 HorizentalAlignment 和 verticalAlignment 属性也不应该在那里!
【解决方案2】:

您可以将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 的恒定边距。

【讨论】:

  • 它不起作用。我的问题是如何在调整窗口大小(并保持边距)时将网格调整为窗口大小?
  • 您不会调整网格的大小。通过省略 Width 和 Height 属性,它会自动拉伸到包含元素(在本例中为 Window)。只需将 Margin 设置为您想要的任何值,您就会得到想要的结果。
  • @Rodniko snurre 是正确的,因为您需要省略 WidthHeight 属性。除非指定对齐方式或大小,否则 WPF 中的控件会自动拉伸以填充其容器。
  • 不,如果网格没有宽度和高度,它会在左上角变成一个小红点。在我最大化窗口后,它也保持一个红点。我希望网格的大小增长到新窗口大小的大小。我希望,在我最大化窗口之后,网格看起来像我附加的第一张图像,但是对于一个完全最大化的窗口。
  • Horizo​​ntalAlignment 和 verticalAlignment 导致网格成为一个点。你是对的,非常感谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多