2017-02-21 108 views
0

我刚开始使用WPF(而不是winforms),并试图创建一个固定大小的窗口(请参见图像)。匹配网格和窗口大小WPF

image 1

问题是,每当我运行应用程序右下角被搞砸了,有附近的按钮和边缘之间的零空间。 (见其他图)

image 2

这里是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搜索没有成功的解决方案。希望有人能够指出我在这里做错了什么。

+0

为两者使用Margin =“10”,设置VerticalAlignment = Top/Bottom和Horizo​​ntalAlignment = Left/Right。 – AnjumSKhan

回答

1

我总是在这些设置中发现DockPanel更灵活。您可以将DockPanel.Dock设置为LeftRightBottomTop,而不是您设置的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> 

注意,在这种情况下,如果窗口足够小,他们会重叠。

另一种选择是增加RowDefinitionsColumnDefinitions到网格:

<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