原文地址:https://wpf.2000things.com/2013/02/21/761-how-flowdirection-affects-horizontalcontentalignment/
FlowDirection 属性可以被设置成 LeftToRight或者 RightToLeft 这两个枚举值,表示控件中内容的水平布局方向。而HorizontalContentAlignment属性也是用来设置控件中内容的水平对齐方式。
那么如果两个属性都设置了,它们是怎么工作的呢?
其实很简单,如果两个属性都设置了,首先会看HorizontalContentAlignment 属性,然后看FlowDirection 属性。如果FlowDirection 属性的值是RightToLeft ,那么控件中的内容会按照HorizontalContentAlignment 属性相反的方向布局。也就是说如果FlowDirection 属性的值是RightToLeft,布局结果最终与HorizontalContentAlignment 属性设置的值相反;如果FlowDirection 属性的值是LeftToRight,那么布局最终结果与HorizontalContentAlignment 属性设置的值相同。可以理解为RightToLeft 起到一个将水平布局反向的作用。
下面是例子和结果图,可以看出设置了FlowDirection 属性的值是RightToLeft后的布局结果
<Grid ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Content="HorizontalContentAlignment / FlowDirection Values" Grid.Row="0" Grid.ColumnSpan="2"
HorizontalAlignment="Center"/>
<Label Content="Left / LeftToRight" Grid.Row="1" Grid.Column="0"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Left"
Background="Bisque"/>
<Label Content="Left / RightToLeft" Grid.Row="1" Grid.Column="1"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Left"
FlowDirection="RightToLeft"
Background="Bisque"/>
<Label Content="Right / LeftToRight" Grid.Row="2" Grid.Column="0"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Right"
Background="Bisque"/>
<Label Content="Right / RightToLeft" Grid.Row="2" Grid.Column="1"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Right"
FlowDirection="RightToLeft"
Background="Bisque"/>
</Grid>