当父窗口调整大小时,WPF调整/对齐按钮
本文关键字:调整 WPF 对齐 按钮 小时 窗口 | 更新日期: 2023-09-27 18:18:55
我正在编写我的第一个WPF应用程序,当窗口最大化时,我在调整按钮大小/对齐按钮时遇到了一些问题。
实际上,我在应用程序的顶部有一排大按钮。目前他们是在画布,但我也尝试过网格和堆栈面板。无论何时我最大化(或者实际上只是扩展我的窗口),按钮基本上都保持在相同的位置。我想要的是重新定位按钮相对于它的父容器,或拉伸按钮的宽度,以适应变化。
谁能提供建议,什么是最好的容器和方法来实现这一点?我看过Canvas。Top/Left, horizontalalignment, Margin等等,但是我似乎找不到正确的组合。
谢谢。
在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。解决问题。