次の方法で共有


FrameworkElement.FlowDirection プロパティ

定義

レイアウトを制御する任意の親要素内でテキストやその他の UI 要素が流れる方向を取得または設定します。 このプロパティは、 または RightToLeftのいずれかにLeftToRight設定できます。 任意の要素で を にRightToLeft設定FlowDirectionすると、配置が右に設定され、読み取り順序が右から左に設定され、コントロールのレイアウトが右から左に流れるようになります。

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" 四角形が右上に表示され、左上は既定LeftToRightの と同じようにFlowDirection表示されません。

<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 は、アプリの右から左へのレイアウトのサポートを目的としています。 基本的には、 を にRightToLeft設定FlowDirectionすると、適切な右から左への動作と、適用される XAML コントロールのレンダリングが生成されます。 特定の XAML コントロールは、このトピックに記載されていないテンプレートまたはロジックFlowDirectionRightToLeft内でさらに処理を行う場合があり、これらの XAML コントロールのリファレンス トピックに記載されている場合があります。

オブジェクトは、オブジェクト ツリー内の FlowDirection 親から値を継承します。 どの要素でも、親から取得した値をオーバーライドできます。 指定しない場合、既定の FlowDirection は です LeftToRight

オブジェクトの値が FlowDirection の場合、RightToLeftFrameworkElement の特定の値と動作が変更されます。

  • 要素内では、"(0, 0)" が右上隅になるように、参照の座標フレームが水平方向に反転されます。 これは、ヒット テスト API によって返される値 ( FindElementsInHostCoordinates など) に影響します。
  • FrameworkElementPath またはその他の Shape の場合、そのビジュアル コンテンツは水平方向に反転されます。
  • レイアウト コンテナーの場合、参照の座標フレームが変更されます。 キャンバスの "(0, 0)" が右上隅にあります。 Grid.Column を目的とした Grid の "0" 列は、右端の列です。
  • コントロールのテンプレートコンポジション内では、同じレイアウト変更が適用されます。 たとえば、RadioButton に 対して としてRightToLeft設定FlowDirectionした場合、RadioButton テンプレート内の Grid が右端の列として "0" を扱い、テキスト ラベルが右揃えになっているため、クリック可能なボタン グラフィックがテキスト ラベルコンテンツの右側に表示されます。
  • 画像 には特別な動作があります。後述の「FlowDirection for Image」セクションを参照してください。

TextBlockTextBox などのテキスト コンテナー内のテキストは、 が RightToLeftの場合FlowDirectionは水平方向に反転しません。文字列全体も、個々の文字やグリフも反転されません。 InlineCollection 内の Inline 要素の順序も変更されません。 これにより、アラビア語 UI に意図的な英語の文字列を含めるなど、それ以外の場合は右から左のアプリでコンテンツを混在できます。 目的の言語が右から左の言語であるテキスト コンテナーのテキスト ソースを意図した文字列は、テキスト コンテナーに正しく表示される適切な Unicode 表現でその文字列を指定する必要があります。 ただし、テキスト コンテナー内の のように RightToLeftFlowDirection値を指定すると、テキストの右端がテキスト コンテナーの境界と右揃えになるように、既定の TextAlignment 値が変更されます。

FlowDirection Glyphs 要素内のテキストには表示効果はありませんが、要素のヒット テストと参照の座標フレームは変更されます。

Image と MediaElement の FlowDirection

イメージに を にRightToLeft設定FlowDirectionすると、Image のビジュアル コンテンツが水平方向に反転されます。 ただし、 Image 要素は、親要素から値を FlowDirection 継承しません。 通常は、レイアウトに関連する画像の画像反転動作のみが必要ですが、テキストやその他のコンポーネントが埋め込まれている要素が右から左の対象ユーザーに対して反転しても意味がない場合は必ずしも必要ありません。 イメージ反転動作を取得するには、Image 要素の要素をFlowDirection特に RightToLeft設定するか、分離コードで プロパティを設定するFlowDirection必要があります。 ローカライズの専門家が後で XAML やコードを変更せずにこの値をFlowDirection変更できるように、x:Uid ディレクティブによって Image 要素を識別し、値を RESW リソースとして指定することを検討してください。

MediaPlayerElement は、どの親要素からも値を継承 FlowDirection しません。 MediaPlayerElement で を明示的に としてRightToLeft設定FlowDirectionすると、イメージの反転と同様に、メディア ビュー領域が水平方向に反転されます。 ローカライズされたコンテンツで使用されるメディア ソースには、ソース メディア ファイルで修正された右から左への問題が既に存在する可能性があるため、意図的にこれを行うことは Image よりもさらにまれである必要があります。

WebView および WebViewBrush の FlowDirection

WebViewWebViewBrush では、HTML の読み込み方法に対する右から左への情報は昇格されません。 HTML コンテンツに左から右への考慮事項がある場合は、WebView 要素に x:Uid ディレクティブを設定し、任意の WebView.Source Uniform Resource Identifier (URI) 値を文字列形式の RESW リソースとして指定することを検討してください。 WebViewWebViewBrush は、親要素から FlowDirection も継承しません。 WebViewWebViewBrush に設定FlowDirectionしても例外は発生しませんが、設定した値はランタイムによって無視されます。

適用対象

こちらもご覧ください