WPF控件不对齐

Yuk*_*uya 0 .net c# wpf

注意:这是我第一次使用WPF.
我试图在右下角对齐某个控件,现在就说一个按钮.但是当我调试我的应用程序时,它错过了8个像素的底部和右侧.我会附上2张照片,告诉你会发生什么.

如何保持按钮到位?

我的XAML代码:

<Window x:Class="Plugin_Manager.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Plugin Manager" Height="350" Width="525" Loaded="Window_Loaded_1">
<Grid x:Name="GridMain">
    <Button Content="Refresh" Margin="432,288,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="75"/>
    <ListView HorizontalAlignment="Left" Height="273" Margin="10,10,0,0" VerticalAlignment="Top" Width="497">
        <ListView.View>
            <GridView>
                <GridViewColumn/>
            </GridView>
        </ListView.View>
    </ListView>

</Grid>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述

Evi*_*key 7

如果您选择使用Grid布局,则应尽量避免放置对象Margin. Margin应该用于在对象周围创建缓冲区,而不是将其移动到窗口中的特定点.使用布局管理器的强大功能!

这是一个Grid可以满足您需求的示例.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <ListView Grid.Row="0" />

    <Button Grid.Row="1"  HorizontalAlignment="Right" Content="Push Me" />

</Grid>
Run Code Online (Sandbox Code Playgroud)

我还会在WPF中阅读布局管理器.有几个; 每个都有自己的优点和缺点.

这是一个DockPanel版本.

<DockPanel>
    <Button DockPanel.Dock="Bottom"  HorizontalAlignment="Right" Content="Push Me" />
    <ListView />
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

要在按钮和窗口镶边之间创建缓冲区,您可以执行以下几项操作:

  1. <Grid Margin="10"> 将在所有内容和所有侧面的窗口镶边之间应用10像素空间.
  2. <Grid Margin="0,0,10,10"> 将缩进所有内容,但仅限于右侧和底部.
  3. <Grid Margin="10,0,10,10"> 除了顶部之外的所有缩进(我通常这样做,具有不同的边距值).
  4. <Button Margin="0,0,10,10"> 只会缩进chrome中的按钮(这是您评论问题的直接答案).

    • Grid上面的内容替换DockPanel为第二个示例,或者您正在使用的任何其他布局管理器.

可用性方面的注意事项:您的确认按钮(我假设您的按钮将是"确定/取消"类型按钮)不应与其他内容缩进.所有与右边距对齐的控件都应该在同一点上进行(即,您可以在它们的右侧绘制一条垂直线).

因此,使用您的问题示例:您的按钮不应缩进10个像素,而列表框不是.保持一致排列将改善您的应用程序的整体外观.

(这结束了我的"可用性和外观很重要"旁注):)