当我指定HorizontalAlignment=“;对”;

本文关键字:HorizontalAlignment | 更新日期: 2023-09-27 17:59:56

这是我的WPF UserControl代码,简化为相关部分:

<UserControl x:Class="AKPS.View.UserCalibWindow"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           >

        <StackPanel  Orientation="Horizontal"  HorizontalAlignment="Right"  Width="1600" >
        <Button   Height="45" Width="100" />
        <Button   Height="45" Width="100" />                
    </StackPanel>

为什么这两个按钮显示在左边?

当我指定HorizontalAlignment=“;对”;

您正在为StackPanel移除一个Width,它将使您的堆栈面板与其中的控件向右对齐。

<StackPanel  Orientation="Horizontal"  HorizontalAlignment="Right"  >
    <Button Height="45" Width="100" />
    <Button Height="45" Width="100" />
</StackPanel>

StackPanel正是这样做的——它将元素水平堆叠在一起。您的HorizontalAlignment指的是堆栈面板,它会将其向右移动,而不是其中的按钮。

相反,可以尝试使用Grid而不是StackPanel,然后将StackPanel(没有Width元素集)放在其中

HorizontalAlignment控制容器的对齐。

请改用HorizontalContentAlignment


正如Abin所指出的,在我匆忙中,我忘记了StackPanel没有HorizontalContentAlignment属性。

不过,您可以使用DockPanel实现类似的功能,也可以使用Abin的解决方案。