匹配网格和窗口大小WPF
问题描述:
我刚开始使用WPF(而不是winforms),并试图创建一个固定大小的窗口(请参见图像)。匹配网格和窗口大小WPF
问题是,每当我运行应用程序右下角被搞砸了,有附近的按钮和边缘之间的零空间。 (见其他图)
这里是XAML代码(大多是由Visual Studio设计产生)
<Window x:Class="UseCaseHelper.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:UseCaseHelper"
mc:Ignorable="d"
Title="UseCaseHelper" Height="500" Width="900">
<Grid>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75"/>
<Button x:Name="button1" Content="Button" HorizontalAlignment="Left" Margin="809,441,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>
我试过google搜索没有成功的解决方案。希望有人能够指出我在这里做错了什么。
答
我总是在这些设置中发现DockPanel
更灵活。您可以将DockPanel.Dock
设置为Left
,Right
,Bottom
或Top
,而不是您设置的VerticalAlighnment和Margin。
<DockPanel LastChildFill="False">
<Button DockPanel.Dock="Top"
Content="Button" HorizontalAlignment="Left" Margin="10,10,0,0"
Width="75"/>
<Button DockPanel.Dock="Bottom"
Content="Button" HorizontalAlignment="Right" Margin="0,0,10,10" Width="75"/>
</DockPanel>
请注意,您也可以对两个按钮使用Margin =“10”。
但是,如果你想使用网格,可以用以下结构:
<Grid>
<Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0"
Width="75"/>
<Button Content="Button" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,10,10" Width="75"/>
</Grid>
注意,在这种情况下,如果窗口足够小,他们会重叠。
另一种选择是增加RowDefinitions
和ColumnDefinitions
到网格:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button
Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0"
Width="75"/>
<Button Grid.Column="2" Grid.Row="2"
Content="Button" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,10,10" Width="75"/>
</Grid>
它的性能比较是比其他两个更好,如果窗口是非常小的。
+0
谢谢!使用DockPanel和给定的边距工作。 – Viva
为两者使用Margin =“10”,设置VerticalAlignment = Top/Bottom和HorizontalAlignment = Left/Right。 – AnjumSKhan