WPF中Horizo​​ntalAlignment和Horizo​​ntalContentAlignment有什么区别?

时间:2012-07-19 17:24:45

标签: wpf wpf-controls

有什么区别:

  • HorizontalAlignment="Stretch"
  • HorizontalContentAlignment="Stretch"

在WPF的文本框中?

示例示例:

<TextBox HorizontalAlignment="Stretch"
            HorizontalContentAlignment="Stretch"
            Height="100"
            TextWrapping="Wrap"
            AcceptsReturn="True"
         ></TextBox>

3 个答案:

答案 0 :(得分:27)

HorizontalAlignmentVerticalAlignment确定控件本身与其父控件的对齐方式。

HorizontalContentAlignmentVerticalContentAlignment确定控件内容与控件的对齐方式。

例如,考虑一个常见的Button控件

<Button x:Name="aButton" Width="50" Height="25" />

在这里,您必须指定此控件如何在其父控件中对齐。合适的父控件可以是StackPanel,Grid,WrapPanel等。

对于Horizontal - 和VerticalAlignment,您可以在选项LeftRightCenterStretch之间进行选择。前三个选项遵循按钮宽度和高度,而最后一个选项尝试将按钮拉伸到指定的方向,忽略设置的宽度或高度:

代码

<StackPanel Orientation="Horizontal">
    <Button x:Name="aButton" Width="50" Height="25" HorizontalAlignment="Right" />
</StackPanel>
例如,

将Button放在StackPanel中并将其对齐在左侧。

HorizontalContentAlignmentVerticalContentAlignment对齐控件的内容。内容是特殊的UIControl,它构建在控件中,您可以通过查看ContentControl的ControlTemplate来简单地利用它。请注意,我们特别谈论ContenControls,它充当一个容器,能够将一个对象“携带”在内部并显示 - 其内容。

因此HorizontalContentAlignmentVerticalContentAlignment正在确定此内容与其容器的对齐方式。在最初创建按钮的情况下,按钮内容是其标题,并且有两个属性,您将在Buttons边框内对齐此标题,这两个标题之一也是其中之一:Left,Right,Center,Stretch。

答案 1 :(得分:9)

HorizontalAlignment会将您的文本框与其包含的父级对齐,而HorizontalContentAlignment会将文本框的文本与其自身对齐。

答案 2 :(得分:0)

Horizo​​ntalContentAlignment和VerticalContentAlignment与内容控件一起使用,后者将这些应用于其内容。例如,在以下代码中,内容控制按钮将其内容(在本例中为字符串,可以是任意对象)与中心对齐。

Horizo​​ntalAlignment和VerticalAlignment与子元素一起使用,当子元素位于Panel中时。小组将根据子元素的这些属性安排其子女。 在下面的代码中,Panel(StackPanel)将其子(Button)对齐。

<StackPanel>
    <Button Content="OK" 
    HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
    HorizontalAlignment="Right" VerticalAlignment="Top" />
</StackPanel>