語言

FrameworkElement.FlowDirection 屬性

定義

它設定文字及其他 UI 元素在任何控制其版面配置的父元素內流動的方向。 此屬性可設定為或 LeftToRightRightToLeft。 將 設定 FlowDirection 為 對 RightToLeft 任意元素,會將比對順序設定為右至左,控制鍵的配置則由右向左流動。

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」矩形出現在右上角,而不是像預設 FlowDirectionLeftToRight時那樣出現在左上角。

<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 旨在支援應用程式的右至左版面配置。 基本上,設定 FlowDirection 為 應該 RightToLeft 會產生適當的從右到左的行為,並對任何套用該 XAML 控制項產生適當的渲染。 特定的 XAML 控制項在其範本或邏輯中可能有進一步的處理,回應 FlowDirection 本 RightToLeft 主題未提及的部分,這些細節可能在該 XAML 控制項的參考主題中有所說明。

物件會 FlowDirection 繼承物件樹中父節點的值。 任何元素都可以覆寫它從父節點獲得的值。 若未指定,預設 的 FlowDirection 為 LeftToRight。

若 FlowDirection 物件值為 RightToLeft,框架 元素 的某些值與行為將會改變:

  • 在元素內,座標參考系會水平翻轉,使得「(0, 0)」成為右上角。 這會影響命中測試 API 回傳的值,例如 FindElementsInHostCoordinates。
  • 如果 FrameworkElement 是 路徑 或其他 形狀,其視覺內容會被水平翻轉。
  • 對於版面容器,參考座標系會改變。 畫 布 中的「(0, 0)」位於右上角。 格子中的「0」欄是格 子 的右邊欄。
  • 在控制項的模板組合中,相同的版面變更也適用。 例如,如果你設定FlowDirection為 RightToLeftRadioButton,可點擊按鈕的圖形會出現在文字標籤內容的右側,因為 RadioButton 範本中的格子現在將「0」視為最右邊的欄位,且文字標籤是右對齊的。
  • 影像 有特殊行為,請參見下方「影像的流向」章節。

TextBlock 或 TextBox 等文字容器中的文字不會水平翻轉,若 FlowDirection ,RightToLeft則整串字串、個別字元或字形均未翻轉。 InlineCollection 中 Inline 元素的順序也不會改變。 這使得原本從右到左的應用程式能夠混合內容,例如在阿拉伯語使用者介面中加入刻意的英文字串。 任何意圖作為文字容器文字來源的字串,若該語言為右至左語言,則應以適當的 Unicode 表示方式指定該字串,且該表示法會在文字容器中正確呈現。 然而,若在文字容器中值為 ,FlowDirectionRightToLeft則會改變預設的 TextAlignment 值,使文字右邊與文字容器的邊界對齊。

FlowDirection 對字 形 元素中的文字沒有明顯影響,但會改變元素的命中測試與座標參考系。

FlowDirection 用於影像與媒體元素

如果你設定 FlowDirection 為 作為 RightToLeft圖片,圖片的視覺 內容會被 水平翻轉。 然而, 影像 元素不會繼承任何父元素的 FlowDirection 值。 通常你只希望在與版面設計相關的圖片中出現圖片翻轉行為,而不一定是那些嵌入文字或其他對從右到左的觀眾來說不合理的元素。 要獲得影像翻轉行為,你必須將影像元素的元素特別設定FlowDirection為 RightToLeft,或在程式碼後面設定該FlowDirection屬性。 考慮用 x:Uid 指令來識別影像元素,並將數值指定FlowDirection為 RESW 資源,這樣你的在地化專家之後就能在不更改 XAML 或程式碼的情況下更改這個數值。

MediaPlayerElement 也不會繼承 FlowDirection 任何父元素的值。 如果你明確設定 FlowDirection 為 RightToLeftMediaPlayerElement 上的 ,那麼媒體檢視區域會水平翻轉, 類似圖片翻 轉的方式。 故意這麼做的情況應該比 Image 還罕見,因為任何用於本地化內容的媒體來源,很可能已經在來源媒體檔案中修正了從右到左的問題。

FlowDirection for WebView 與 WebViewBrush

WebView 和 WebViewBrush 不會提供任何從右到左的 HTML 載入資訊。 若 HTML 內容中有任何從左到右的考量,請考慮在 WebView 元素上設定 x:Uid 指令,並將任一 WebView.Source 統一資源識別碼(URI)值指定為字串形式 RESW 資源。 WebView 和 WebViewBrush 也不會從任何父元素繼承 FlowDirection。 在 WebView 和 WebViewBrush 設定FlowDirection不會造成異常,但你設定的任何值都會被執行時忽略。

適用於

另請參閱