Поделиться через


FrameworkElement.FlowDirection Свойство

Определение

Возвращает или задает направление потока текста и других элементов пользовательского интерфейса в любом родительском элементе, управляющего их макетом. Этому свойству можно задать значение 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"/>

Значение свойства

Направление потока текста и других элементов пользовательского интерфейса в родительском элементе в виде значения перечисления. Значение по умолчанию — LeftToRight.

Примеры

В этом примере XAML показано, как контейнер макета, например Grid , интерпретирует значение RightToLeft. Если вы посмотрите на пользовательский интерфейс, создаваемый этим XAML, прямоугольник 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 могут иметь дополнительную обработку в своих шаблонах или логике, которая реагирует на FlowDirection RightToLeft , который не указан в этом разделе, и это может быть указано в справочных статьях по этим элементам управления XAML.

Объект наследует значение FlowDirection от родительского объекта в дереве объектов. Любой элемент может переопределить значение, которое он получает от родительского элемента. Если значение не указано, значение FlowDirection по умолчанию — LeftToRight.

Если значение FlowDirection в объекте — RightToLeft, некоторые значения и поведение FrameworkElement изменится:

  • В элементе координатная система отсчета перевернута по горизонтали, чтобы "(0, 0)" была в правом верхнем углу. Это влияет на значения, возвращаемые API проверки попадания, например FindElementsInHostCoordinates.
  • Если Элемент FrameworkElement представляет собой путь или другую фигуру, ее визуальное содержимое переворачивается по горизонтали.
  • Для контейнеров макета изменяется координатная рамка ссылок. "(0, 0)" в canvas — это правый верхний угол. Столбец "0" в элементе Grid для grid.Column является самым правым столбцом.
  • В структуре шаблона элемента управления применяются те же изменения макета. Например, если для элемента RadioButton для Параметра FlowDirection задано значение RightToLeft, справа от содержимого текстовой метки появится изображение кнопки с возможностью нажатия кнопки, так как элемент Grid в шаблоне RadioButton теперь рассматривает "0" как самый правый столбец, а текстовая метка выравнивается по правому краю.
  • Изображение имеет особое поведение, см. раздел "FlowDirection for Image" ниже.

Текст в текстовых контейнерах, таких как TextBlock или TextBox , не переключается по горизонтали, если FlowDirection имеет значение RightToLeft, ни вся строка, ни отдельные символы или глифы не перевернуты. Порядок встроенных элементов в InlineCollection также не изменяется. Это позволяет смешивать содержимое в противном случае справа налево, например включать преднамеренные строки английского языка в интерфейсе арабского языка. Любая строка, предназначенная для текстового контейнера, в котором используется язык справа налево, должна указывать ее в соответствующем представлении Юникода, которое будет правильно представлено в текстовом контейнере. Однако значение FlowDirection как RightToLeft в текстовом контейнере изменяет значение textAlignment по умолчанию таким образом, что правый край текста выравнивается по правому краю с границами текстового контейнера.

FlowDirection не оказывает видимого влияния на текст в элементе Glyphs , но изменяет проверку попадания элемента и координатную систему отсчета.

FlowDirection для Image и MediaElement

Если для параметра FlowDirection задано значение RightToLeft для изображения, визуальное содержимое изображения будет переворачиваться по горизонтали. Однако элемент Image не наследует значение FlowDirection от родительского элемента. Как правило, требуется поведение переворачивания изображений только в изображениях, относящихся к макету, но не обязательно для элементов с внедренным текстом или другими компонентами, которые не имеют смысла перевернуть для аудитории справа налево. Чтобы получить поведение переворачивания изображения, необходимо задать элемент FlowDirection в элементе Image в частности RightToLeft или задать свойство FlowDirection в коде программной части. Рекомендуется определить элемент Image с помощью директивы x:Uid и указать значения FlowDirection в качестве ресурса RESW, чтобы специалисты по локализации могли позже изменить это значение без изменения XAML или кода.

MediaElement также не наследует значение FlowDirection от родительского элемента. Если в MediaElement явно задать значение FlowDirection как RightToLeft, область представления мультимедиа будет перевернута по горизонтали, аналогично тому, как изображение переворачивается. Это намеренно должно быть еще более редким, чем Image, так как в любом источнике мультимедиа, используемом в локализованном содержимом, уже есть проблемы справа налево в исходном файле мультимедиа.

FlowDirection для WebView и WebViewBrush

WebView и WebViewBrush не повышают уровень сведений справа налево до загрузки HTML. Если в HTML-содержимом есть рекомендации слева направо, попробуйте задать директиву x:Uid в элементе WebView и указать любое значение универсального кода ресурса WebView.Source в качестве ресурса RESW в строковой форме. WebView и WebViewBrush также не наследуют FlowDirection от родительских элементов. Установка FlowDirection в WebView и WebViewBrush не вызывает исключений, но любое заданное значение игнорируется средой выполнения.

Применяется к

См. также раздел