FrameworkElement.FlowDirection 属性

定义

获取或设置文本和其他 UI 元素在控制其布局的任何父元素中的流动方向。 此属性可以设置为 LeftToRightRightToLeft。 在任何元素上将 设置为 FlowDirectionRightToLeft ,会将对齐方式设置为向右,将阅读顺序设置为从右到左,并将控件的布局设置为从右到左流动。

public:
 property FlowDirection FlowDirection { FlowDirection get(); void set(FlowDirection value); };
FlowDirection FlowDirection();

void FlowDirection(FlowDirection value);
public FlowDirection FlowDirection { get; set; }
var flowDirection = frameworkElement.flowDirection;
frameworkElement.flowDirection = flowDirection;
Public Property FlowDirection As FlowDirection
<frameworkElement FlowDirection="flowDirectionMemberName"/>

属性值

文本和其他 UI 元素在其父元素中流动的方向,作为枚举的值。 默认值为 LeftToRight

示例

此 XAML 示例演示布局容器(如 Grid )如何解释 值 RightToLeft。 如果查看此 XAML 生成的 UI,“Chartreuse”矩形将显示在右上角,而不是在默认 LeftToRightFlowDirection显示在左上角。

<Grid FlowDirection="RightToLeft">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Rectangle Fill="Chartreuse" Width="30" Height="30"/>
    <Rectangle Grid.Row="1" Fill="Purple" Width="30" Height="30"/>
    <Rectangle Grid.Column="1" Fill="Pink" Width="30" Height="30"/>
    <Rectangle Grid.Row="1" Grid.Column="1" Fill="Orange" Width="30" Height="30"/>
</Grid>

注解

FlowDirection 旨在支持应用的从右到左布局。 基本上,将 设置为 FlowDirectionRightToLeft 应生成适当的从右到左的行为,并呈现应用了它的任何 XAML 控件。 特定 XAML 控件可能在其模板或逻辑中具有进一步的处理,这些模板或逻辑FlowDirectionRightToLeft对此没有在本主题中说明,这些 XAML 控件的参考主题中可能会指出这一点。

对象从对象树中的父级继承 FlowDirection 值。 任何元素都可以替代它从其父元素获取的值。 如果未指定,则默认 FlowDirectionLeftToRight

FlowDirection如果 对象RightToLeft上的值为 ,则 FrameworkElement 的某些值和行为将更改:

  • 在 元素中,引用的坐标框架水平翻转,以便“ (0, 0) ”为右上角。 这会影响命中测试 API 返回的值,例如 FindElementsInHostCoordinates
  • 如果 FrameworkElement路径 或其他 形状,则其视觉内容水平翻转。
  • 对于布局容器,引用的坐标框架会更改。 画布中的“ (0, 0) ”是右上角。 对于 Grid.Column ,网格中的“0”列是最右侧的列。
  • 在控件的模板组合中,应用相同的布局更改。 例如,如果将 RadioButton 设置为 FlowDirectionRightToLeft可单击按钮图形将显示在文本标签内容的右侧,因为 RadioButton 模板中的网格现在将“0”视为最右侧的列,并且文本标签右对齐。
  • 图像 具有特殊行为,请参阅下面的“图像的 FlowDirection”部分。

文本容器(如 TextBlockTextBox )中的文本不会水平翻转(如果 FlowDirectionRightToLeft,则不会翻转整个字符串或单个字符或字形。 InlineCollection中 Inline 元素的顺序也不会更改。 这样就可以在从右到左的应用中混合内容,例如在阿拉伯语 UI 中包含特意的英语字符串。 任何旨在作为文本容器的文本源的字符串(其中预期语言是从右到左的语言)都应在适当的 Unicode 表示形式中指定该字符串,该字符串将正确显示在文本容器中。 但是,文本容器中的 值 FlowDirection (如 ) RightToLeft 确实会更改默认 TextAlignment 值,使文本的右边缘与文本容器边界右对齐。

FlowDirectionGlyphs 元素中的文本没有可见效果,但会更改元素的命中测试和坐标参考框架。

Image 和 MediaElement 的 FlowDirection

如果为 Image 设置为 RightToLeftFlowDirection ,图像的视觉内容将水平翻转。 但是, Image 元素不会从任何父元素继承 FlowDirection 值。 通常,你只需要与布局相关的图像中的图像翻转行为,但不一定与嵌入文本的元素或其他对从右向左的受众没有意义翻转的元素。 若要获取图像翻转行为,必须将 Image 元素上的 元素专门设置为 RightToLeftFlowDirection ,或在代码隐藏中设置 FlowDirection 属性。 请考虑通过 x:Uid 指令标识 Image 元素,并将值指定FlowDirection为 RESW 资源,以便本地化专家稍后可以更改此值,而无需更改 XAML 或代码。

MediaPlayerElement 也不会从任何父元素继承 FlowDirection 值。 如果在 MediaPlayerElement 上显式设置为 FlowDirectionRightToLeft ,则媒体视图区域将水平翻转,类似于图像翻转的方式。 故意执行此操作应该比 Image 更罕见,因为本地化内容中使用的任何媒体源很可能已在源媒体文件中更正了任何从右到左的问题。

适用于 WebView 和 WebViewBrush 的 FlowDirection

WebViewWebViewBrush 不会将任何从右到左的信息提升为 HTML 的加载方式。 如果 HTML 内容中有任何从左到右的注意事项,请考虑在 WebView 元素上设置 x:Uid 指令,并将任何 WebView.Source 统一资源标识符 (URI) 值指定为字符串形式的 RESW 资源。 WebViewWebViewBrush 也不会从任何父元素继承 FlowDirection。 在 WebViewWebViewBrush 上设置FlowDirection不会导致异常,但运行时会忽略你设置的任何值。

适用于

另请参阅