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

时间:2016-05-03 14:15:17

标签: c# wpf xaml

xaml代码,在网格内:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
     <TextBlock Text="My text: " HorizontalAlignment="Left" />
     <TextBox Text="{Binding ...}" />
</StackPanel>

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

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

<StackPanel Orientation="Horizontal"  HorizontalAlignment="Right">
     <StackPanel HorizontalAlignment="Left">
        <TextBlock Text="My text: " HorizontalAlignment="Left" />
     </StackPanel>
     <TextBox  Text="{Binding ...}" />
</StackPanel>

我该怎么办? Thx提前。

1 个答案:

答案 0 :(得分:6)

使用 HorizontalContentAlignment TextAlignmentHorizontalAlignment定义TextBox相对于StackPanel的对齐方式。除非您已应用全局TextBox,否则Style内的文字仍默认为左对齐。

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

/编辑:抱歉。对于TextAlignmentTextBox控件,TextBlockHorizontalContentAlignment适用于未明确使用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>