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

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

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

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

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

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

FlowDirection для Image и MediaElement

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

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

FlowDirection для WebView и WebViewBrush

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

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

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