当父窗口调整大小时,WPF调整/对齐按钮

本文关键字:调整 WPF 对齐 按钮 小时 窗口 | 更新日期: 2023-09-27 18:18:55

我正在编写我的第一个WPF应用程序,当窗口最大化时,我在调整按钮大小/对齐按钮时遇到了一些问题。

实际上,我在应用程序的顶部有一排大按钮。目前他们是在画布,但我也尝试过网格和堆栈面板。无论何时我最大化(或者实际上只是扩展我的窗口),按钮基本上都保持在相同的位置。我想要的是重新定位按钮相对于它的父容器,或拉伸按钮的宽度,以适应变化。

谁能提供建议,什么是最好的容器和方法来实现这一点?我看过Canvas。Top/Left, horizontalalignment, Margin等等,但是我似乎找不到正确的组合。

谢谢。

当父窗口调整大小时,WPF调整/对齐按钮

在WPF中,所有的内容都应该在MainGrid中对齐。如果你把Button 1放到Grid中。第3行和网格。第二列,它将保持在那里

如果你改变你的窗口大小,网格被调整大小,但控件保持在他们的位置。您还可以使您的网格行/列固定宽度、自动大小或百分比。

控件也是如此。因此,知道了这些,就只需要摆弄一下它。

下面是一个例子。只要调整一下宽度:

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.RowDefinitions>
        <RowDefinition Height="43*" />
        <RowDefinition Height="222*" />
        <RowDefinition Height="35*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="113*" />
        <ColumnDefinition Width="168*" />
        <ColumnDefinition Width="119*" />
    </Grid.ColumnDefinitions>
    <Button Content="TEST" Grid.Column="2" Grid.Row="1" 
     HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" />
</Grid>

设置一些Auto,设置一些fixed,最后你就会明白目标了

我会使用DockPanel与Panel停靠到顶部为您的目的。或者,如果你想让按钮拉伸,你可以使用UniformGrid。

<DockPanel>
  <StackPanel DockPanel.Dock="Top">
    <Button Content="Button1"/>
    <Button Content="Button2"/>
    <Button Content="Button3"/>
  </StackPanel
  <Grid>
    <!-- Stuff in the main part of the window here -->
  </Grid>
</DockPanel>

您可以使用@De-ruige提到的网格。

除了帮助你理解网格的含义,在你的网格定义中使用属性"ShowGridLines",像这样:

<Grid x:Name="LayoutRoot" Background="White" ShowGridLines="True">

另外,如果你想在你的网格中添加一个控件,比如一个按钮,你可以使用这些:Grid.RowSpan/Grid.ColumnSpan

网格。行宽。MSDN

HorizontalAlignment改为"Right", VerticalAlignment改为"Bottom"。

Bam。解决问题。