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
значение , справа от содержимого текстовой метки будет отображаться кнопка нажатия, так как сетка в шаблоне RadioButton теперь рассматривает "0" как крайний правый столбец, а текстовая метка выравнивается по правому краю. - Изображение имеет особое поведение, см. раздел "FlowDirection for Image" ниже.
Текст в текстовых контейнерах, таких как TextBlock или TextBox , не перевернут по горизонтали, если FlowDirection
имеет значение RightToLeft
, ни вся строка, ни отдельные символы или глифы не перевернуты. Порядок встроенных элементов в InlineCollection также не меняется. Это позволяет смешивать содержимое в приложении, в противном случае справа налево, например включать преднамеренные строки на английском языке в пользовательский интерфейс арабского языка. Любая строка, предназначенная для текстового контейнера, в котором используется язык справа налево, должна указывать ее в соответствующем представлении Юникода, которое будет правильно представлено в текстовом контейнере. Однако значение FlowDirection
as RightToLeft
в текстовом контейнере изменяет значение TextAlignment по умолчанию, чтобы правый край текста был выровнен по правому краю с границами текстового контейнера.
FlowDirection
не оказывает видимого влияния на текст в элементе Glyphs , но изменяет проверку попадания элемента и координатную систему отсчета.
FlowDirection для Image и MediaElement
Если для изображения задано значение FlowDirection
RightToLeft
, визуальное содержимое изображения переворачивается по горизонтали. Однако элемент 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 не вызывает исключений, но любое заданное значение игнорируется средой выполнения.