编译后未对齐按钮

时间:2015-06-10 02:59:43

标签: c# wpf

enter image description here我正在为我的应用创建一个简单的界面。当我准备GUI设计时,一切顺利,我正在使用WPF及其XAML实现。在编译得非常好并且应用程序正在运行之后出现了问题。当应用程序运行时,有一个按钮未对齐。我找了问题,一无所获。关于如何解决这个问题的任何想法?

预期结果在左侧,实际结果在浮动窗口上。未对齐按钮的XAML代码位于浮动窗口下方。

1 个答案:

答案 0 :(得分:1)

<Window x:Class="WPFAlignment.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.Resources>
        <Style TargetType="Button">
            <Setter Property="Margin" Value="3"/>
        </Style>
        <Style TargetType="TextBlock">
            <Setter Property="Margin" Value="3"/>
        </Style>
    </Grid.Resources>
    <Grid Width="500">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="2*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Button Content="LoadFingerPrint"/>
            <Button Grid.Column="1" Content="Load File"/>
        </Grid>
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <TextBlock Text="File Path:" 
                       HorizontalAlignment="Left"
                       VerticalAlignment="Center"/>
            <TextBlock Grid.Row="1" 
                       Text="Key Size:" 
                       HorizontalAlignment="Left" 
                       VerticalAlignment="Center"/>
            <TextBlock Grid.Row="2" 
                       Text="Initial Vector:"
                       HorizontalAlignment="Left" 
                       VerticalAlignment="Center"/>

            <DockPanel LastChildFill="True" Grid.Column="1" Grid.ColumnSpan="3">
                <TextBox Margin="2"/>
            </DockPanel>
            <Grid Grid.Column="1" 
                  Grid.ColumnSpan="3"
                  Grid.Row="1" 
                  VerticalAlignment="Center">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <CheckBox  Content="128bit" 
                           VerticalAlignment="Center" 
                           HorizontalAlignment="Left"/>
                <CheckBox Grid.Column="1" 
                          Content="192bit"
                          VerticalAlignment="Center"
                          HorizontalAlignment="Left"/>
                <CheckBox Grid.Column="2"
                          Content="256bit"
                          VerticalAlignment="Center" 
                          HorizontalAlignment="Right"/>
            </Grid>
                <DockPanel LastChildFill="True" 
                           Grid.Column="1" 
                           Grid.Row="2" 
                           Grid.ColumnSpan="3">
                <TextBox Margin="2"/>
            </DockPanel>
        </Grid>
        <Grid Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Button Content="Encrypt"/>
            <Button Grid.Column="1" 
                    Content="Decrypt"/>
            <Button Grid.Column="2" 
                    Content="Abort"/>
        </Grid>
    </Grid>
</Grid>

enter image description here

你可以尝试这个并看到对齐吗?你手边设置了所有这些边距......我认为这就是问题所在。

基本上,对于定位使用容器:Grid,DockPanel,StackPanel等,并且在它们内部是相对的,请使用如示例中的Alignments VerticalAlignment。 此外,为了为许多控件设置一些常用值,请使用样式,就像我使用按钮的边距一样。