我正在编写我的第一个WPF应用程序,当窗口最大化时,我在调整按钮大小/调整按钮方面遇到了一些问题。
基本上我的应用程序顶部有一排大按钮。目前他们在Canvas中,但我也尝试过Grid和Stackpanel。每当我最大化(或者实际上只是扩展我的窗口)时,按钮基本上都停留在同一个地方。我想要的是重新定位按钮相对于其父容器,或拉伸按钮宽度以适应更改。
有人可以就什么是最好的容器和方法提供建议吗?我看过Canvas.Top/Left,HorzontalAlignment,Margin等,但我似乎无法找到正确的组合。
感谢。
答案 0 :(得分:5)
WPF的方法是在MainGrid中对齐所有内容。 如果你把Button 1放在例如Grid.Row 3和Grid.Column 2中,它将保留在那里。
如果更改窗口大小,网格会调整大小,但控件仍保留在原位。 您还可以使网格行/列固定宽度,自动调整大小或百分比。
与您的控件相同。所以知道这一点,只需要玩弄它。
这是一个例子。只需使用宽度:
<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>
制作一些自动,修复一些,最后你会理解目标。
答案 1 :(得分:1)
我会使用一个DockPanel,并将面板停靠在顶部以达到您的目的。或者,如果您想要拉伸按钮,可以使用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>
答案 2 :(得分:1)
您可以使用@ De-ruige提到的网格。
除了帮助您理解网格的含义之外,还可以在网格定义中使用属性“ShowGridLines”,如下所示:
<Grid x:Name="LayoutRoot" Background="White" ShowGridLines="True">
此外,如果您想在网格中的几个单元格中添加按钮之类的控件,可以使用以下代码:Grid.RowSpan
/ Grid.ColumnSpan
。
Grid.RowSpan - MSDN
答案 3 :(得分:0)
将HorizontalAlignment
更改为“正确”,将VerticalAlignment
更改为“底部”。
的Bam。问题解决。