FrameworkElement.FlowDirection プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
レイアウトを制御する任意の親要素内でテキストやその他の 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 コントロールは、このトピックに記載されていないテンプレートまたはロジックFlowDirection
RightToLeft
内でさらに処理を行う場合があり、これらの XAML コントロールのリファレンス トピックに記載されている場合があります。
オブジェクトは、オブジェクト ツリー内の FlowDirection
親から値を継承します。 どの要素でも、親から取得した値をオーバーライドできます。 指定しない場合、既定の FlowDirection は です LeftToRight
。
オブジェクトの値が FlowDirection
の場合、RightToLeft
FrameworkElement の特定の値と動作が変更されます。
- 要素内では、"(0, 0)" が右上隅になるように、参照の座標フレームが水平方向に反転されます。 これは、ヒット テスト API によって返される値 ( FindElementsInHostCoordinates など) に影響します。
- FrameworkElement が Path またはその他の Shape の場合、そのビジュアル コンテンツは水平方向に反転されます。
- レイアウト コンテナーの場合、参照の座標フレームが変更されます。 キャンバスの "(0, 0)" が右上隅にあります。 Grid.Column を目的とした Grid の "0" 列は、右端の列です。
- コントロールのテンプレートコンポジション内では、同じレイアウト変更が適用されます。 たとえば、RadioButton に 対して として
RightToLeft
設定FlowDirection
した場合、RadioButton テンプレート内の Grid が右端の列として "0" を扱い、テキスト ラベルが右揃えになっているため、クリック可能なボタン グラフィックがテキスト ラベルコンテンツの右側に表示されます。 - 画像 には特別な動作があります。後述の「FlowDirection for Image」セクションを参照してください。
TextBlock や TextBox などのテキスト コンテナー内のテキストは、 が RightToLeft
の場合FlowDirection
は水平方向に反転しません。文字列全体も、個々の文字やグリフも反転されません。
InlineCollection 内の Inline 要素の順序も変更されません。 これにより、アラビア語 UI に意図的な英語の文字列を含めるなど、それ以外の場合は右から左のアプリでコンテンツを混在できます。 目的の言語が右から左の言語であるテキスト コンテナーのテキスト ソースを意図した文字列は、テキスト コンテナーに正しく表示される適切な Unicode 表現でその文字列を指定する必要があります。 ただし、テキスト コンテナー内の のように RightToLeft
のFlowDirection
値を指定すると、テキストの右端がテキスト コンテナーの境界と右揃えになるように、既定の 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
WebView と WebViewBrush では、HTML の読み込み方法に対する右から左への情報は昇格されません。 HTML コンテンツに左から右への考慮事項がある場合は、WebView 要素に x:Uid ディレクティブを設定し、任意の WebView.Source Uniform Resource Identifier (URI) 値を文字列形式の RESW リソースとして指定することを検討してください。
WebView と WebViewBrush は、親要素から FlowDirection も継承しません。
WebView と WebViewBrush に設定FlowDirection
しても例外は発生しませんが、設定した値はランタイムによって無視されます。