FrameworkElement.FlowDirection 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定文字和其他 UI 元素在控制其版面配置的任何父元素內流動的方向。 這個屬性可以設定為 LeftToRight 或 RightToLeft。 在任何元素上將 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」 矩形會出現在右上方,而不是 FlowDirection 是預設 LeftToRight時,左上方的矩形。
<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 控制項在其範本或邏輯中可能會有進一步處理,以回應本主題中未提及的 RightToLeft FlowDirection,而且這些 XAML 控制項的參考主題中可能會注意到這點。
物件會從物件樹狀結構中的父系繼承 FlowDirection 值。 任何專案都可以覆寫它從其父代取得的值。 如果未指定,則預設 FlowDirection 為 LeftToRight。
如果物件的 FlowDirection 值是 RightToLeft, FrameworkElement 的特定值和行為將會變更:
- 在 元素中,參考的座標框架會水準翻轉,讓「 (0, 0) 」 成為右上角。 這會影響點擊測試 API 所傳回的值,例如 FindElementsInHostCoordinates。
- 如果 FrameworkElement 是 Path 或其他 Shape,則會水準翻轉其視覺內容。
- 針對版面配置容器,參考座標框架會變更。 畫布中的 「 (0, 0) 」 是右上角。 Grid.Column的 「0」 資料行是最右邊的資料行。
- 在控制項的範本組合中,會套用相同的版面配置變更。 例如,如果您將 FlowDirection 設定為RadioButton的RightToLeft,可點選的按鈕圖形會顯示在文字標籤內容的右邊,因為RadioButton範本內的Grid現在會將 「0」 視為最右邊的資料行,而且文字標籤靠右對齊。
- Image has a special behavior, see "FlowDirection for Image" section below.
如果 FlowDirection 是RightToLeft,則TextBlock或TextBox等文字容器中的文字不會水準翻轉,不會翻轉整個字串或個別字元或字元。 InlineCollection中的內嵌專案順序不會變更。 這可讓您在從右至左的應用程式中混合內容,例如,在阿拉伯文 UI 中包含刻意的英文字串。 任何要做為文字容器文字來源的字串,其中預期語言是由右至左的語言,應該在適當的 Unicode 標記法中指定該字串,該字串會在文字容器中正確呈現。 不過,在文字容器中做為 RightToLeft 的 FlowDirection 值會變更預設 的 TextAlignment 值,讓文字的右邊緣與文字容器界限對齊。
FlowDirection 對 Glyphs 元素中的文字沒有可見的影響,但會變更元素的點擊測試和座標參照框架。
Image 和 MediaElement 的 FlowDirection
如果您將 FlowDirection 設定為Image的RightToLeft,影像的視覺內容會水準翻轉。 不過, Image 元素不會從任何父元素繼承 FlowDirection 值。 一般而言,您只需要在與版面配置相關的影像中執行影像翻轉行為,但不一定是具有內嵌文字或其他元件且對右至左物件而言不合理翻轉的元素。 若要取得影像翻轉行為,您必須將 Image 元素上的 FlowDirection 元素特別設定為 RightToLeft,或在程式碼後置中設定 FlowDirection 屬性。 請考慮使用x:Uid 指示詞來識別Image元素,並將 FlowDirection 值指定為 RESW 資源,讓您的當地語系化專家稍後可以變更此值,而不需變更 XAML 或程式碼。
MediaElement 也不會從任何父元素繼承 FlowDirection 值。 如果您明確地在MediaElement上將 FlowDirection 設定為RightToLeft,則媒體檢視區域會水準翻轉,類似于影像翻轉的方式。 這麼做應該比 Image更罕見,因為當地語系化內容中使用的任何媒體來源可能已經有來源媒體檔案中修正的任何由右至左的問題。
WebView 和 WebViewBrush 的 FlowDirection
WebView 和 WebViewBrush 不會將任何由右至左的資訊升階為 HTML 的載入方式。 如果 HTML 內容中有任何由左至右的考慮,請考慮在WebView元素上設定x:Uid 指示詞,並指定任何WebView.Source Uniform Resource Identifier (URI) 值做為字串格式 RESW 資源。 WebView 和 WebViewBrush 也不會從任何父元素繼承 FlowDirection。 在 WebView 和WebViewBrush上設定 FlowDirection 不會造成例外狀況,但執行時間會忽略您設定的任何值。