XAML Horizo​​ntalAlignment属性没有做我想要的

A.D*_*.D. 1 c# wpf xaml

xaml代码,在网格内:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
     <TextBlock Text="My text: " HorizontalAlignment="Left" />
     <TextBox Text="{Binding ...}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我希望文本块左对齐,Tetblock右对齐.使用前面的代码,两者都是右对齐的.

如果我添加一个内部StackPanel,结果相同:

<StackPanel Orientation="Horizontal"  HorizontalAlignment="Right">
     <StackPanel HorizontalAlignment="Left">
        <TextBlock Text="My text: " HorizontalAlignment="Left" />
     </StackPanel>
     <TextBox  Text="{Binding ...}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

我应该怎么做?Thx提前.

Adw*_*yth 6

使用 HorizontalContentAlignmentTextAlignment.HorizontalAlignment定义TextBox相对于的对齐方式StackPanel.TextBox除非您已Style应用全局,否则默认情况下,文本内部的文本仍然对齐.

另外一个StackPanel与水平方向始终使用的最小空间成为可能.因此它会尽可能紧密地堆叠控件.如果要正确格式化,则必须使用网格或为TextBox/ TextBlock控件指定固定宽度.

/编辑:抱歉.TextAlignment用于TextBoxTextBlock控制.HorizontalContentAlignment适用于未明确使用类似Text属性的控件Label.

如果您不想使用固定宽度,另一种选择是Dockpanel,如下所示:

<DockPanel Grid.Column="0" Grid.Row="0" Margin="10, 0" LastChildFill="true">
    <TextBox   Width="160" Height="30" DockPanel.Dock="Right" BorderBrush="#6593CF" BorderThickness="1" Text="{Binding ...}" />
    <TextBlock Text="My text: " FontSize="14" FontWeight="SemiBold" DockPanel.Dock="Left" TextAlignment="Left" />
</DockPanel>
Run Code Online (Sandbox Code Playgroud)