FrameworkElement.FlowDirection Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece la dirección en la que el texto y otros elementos de la interfaz de usuario fluyen dentro de cualquier elemento primario que controle su diseño. Esta propiedad se puede establecer en LeftToRight
o RightToLeft
. Al establecer FlowDirection
en RightToLeft
en cualquier elemento, se establece la alineación a la derecha, el orden de lectura de derecha a izquierda y el diseño del control que se va a fluir de derecha a izquierda.
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"/>
Valor de propiedad
Dirección en la que fluye el texto y otros elementos de la interfaz de usuario dentro de su elemento primario, como valor de la enumeración. El valor predeterminado es LeftToRight.
Ejemplos
En este ejemplo XAML se muestra cómo un contenedor de diseño, como Grid , interpreta un valor de RightToLeft
. Si observas la interfaz de usuario que genera este XAML, el rectángulo "Chartreuse" aparece en la parte superior derecha, no en la parte superior izquierda, como lo haría cuando FlowDirection
es el valor predeterminado 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>
Comentarios
FlowDirection
está diseñado para admitir el diseño de derecha a izquierda para las aplicaciones. Básicamente, establecer FlowDirection
en RightToLeft
debe generar un comportamiento adecuado de derecha a izquierda y representación de cualquier control XAML al que se aplique. Los controles XAML específicos pueden tener un mayor control dentro de sus plantillas o lógicas a las FlowDirection
que no se indica en este tema, y esto puede tenerse en cuenta en los temas de RightToLeft
referencia de esos controles XAML.
Un objeto hereda el FlowDirection
valor de su elemento primario en el árbol de objetos. Cualquier elemento puede invalidar el valor que obtiene de su elemento primario. Si no se especifica, flowDirection predeterminado es LeftToRight
.
Si el FlowDirection
valor de un objeto es RightToLeft
, ciertos valores y comportamiento de FrameworkElement cambiarán:
- Dentro del elemento , el marco de coordenada de referencia se voltea horizontalmente de modo que "(0, 0)" será la esquina superior derecha. Esto afecta a los valores devueltos por la API de prueba de posicionamiento, como FindElementsInHostCoordinates.
- Si FrameworkElement es una ruta de acceso u otra forma, su contenido visual se voltea horizontalmente.
- En el caso de los contenedores de diseño, el marco de coordenadas de los cambios de referencia. "(0, 0)" en un lienzo es la esquina superior derecha. La columna "0" de una cuadrícula con fines de Grid.Column es la columna situada más a la derecha.
- Dentro de la composición de la plantilla de un control, se aplican los mismos cambios de diseño. Por ejemplo, si establece
FlowDirection
comoRightToLeft
para un RadioButton, el gráfico de botón en el que se puede hacer clic aparecerá a la derecha del contenido de la etiqueta de texto, ya que grid dentro de la plantilla RadioButton ahora trata "0" como columna más a la derecha y la etiqueta de texto está alineada a la derecha. - La imagen tiene un comportamiento especial, consulte la sección "FlowDirection for Image" a continuación.
El texto de contenedores de texto como TextBlock o TextBox no se voltea horizontalmente si FlowDirection
es RightToLeft
, ni la cadena completa ni los caracteres individuales ni los glifos se voltean. El orden de los elementos Insertados en una clase InlineCollection tampoco cambia. Esto permite mezclar contenido en una aplicación de derecha a izquierda, como incluir cadenas de idioma inglés deliberadas en una interfaz de usuario de idioma árabe. Cualquier cadena que esté pensada para ser un origen de texto para un contenedor de texto en el que el idioma previsto sea un idioma de derecha a izquierda debe especificar esa cadena en la representación Unicode adecuada, que se presentará correctamente en un contenedor de texto. Sin embargo, un valor de FlowDirection
como RightToLeft
en un contenedor de texto cambia el valor predeterminado TextAlignment de modo que el borde derecho del texto esté alineado a la derecha con los límites del contenedor de texto.
FlowDirection
no tiene ningún efecto visible en el texto de un elemento Glyphs , pero cambia la prueba de posicionamiento del elemento y el marco de coordenadas de referencia.
FlowDirection para Image y MediaElement
Si establece FlowDirection
como RightToLeft
para una imagen, el contenido visual de una imagen se voltea horizontalmente. Sin embargo, un elemento Image no hereda el FlowDirection
valor de ningún elemento primario. Normalmente, solo se quiere el comportamiento de volteo de imágenes en imágenes que son relevantes para el diseño, pero no necesariamente para los elementos que tienen texto incrustado u otros componentes que no tendría sentido voltear para un público de derecha a izquierda. Para obtener el comportamiento de volteo de imágenes, debe establecer el FlowDirection
elemento en el elemento Image específicamente RightToLeft
en o establecer la FlowDirection
propiedad en el código subyacente. Considere la posibilidad de identificar el elemento Image mediante la directiva x:Uid y especificar FlowDirection
valores como un recurso RESW para que los expertos en localización puedan cambiar este valor más adelante sin cambiar el código o XAML.
MediaPlayerElement tampoco hereda FlowDirection
el valor de ningún elemento primario. Si estableces FlowDirection
explícitamente como RightToLeft
en MediaPlayerElement, el área de vista multimedia se voltea horizontalmente, similar a cómo se voltea una imagen . Esto deliberadamente debería ser aún más raro que Image, ya que es probable que cualquier origen multimedia usado en el contenido localizado ya tenga problemas de derecha a izquierda corregidos en el archivo multimedia de origen.
FlowDirection para WebView y WebViewBrush
WebView y WebViewBrush no promueven ninguna información de derecha a izquierda a cómo se carga el CÓDIGO HTML. Si hay consideraciones de izquierda a derecha en el contenido HTML, considere la posibilidad de establecer la directiva x:Uid en el elemento WebView y especificar cualquier valor de Identificador uniforme de recursos (URI) de WebView.Source como un recurso RESW de formulario de cadena.
WebView y WebViewBrush tampoco heredan FlowDirection de ningún elemento primario. Establecer FlowDirection
en WebView y WebViewBrush no provoca excepciones, pero el tiempo de ejecución omite cualquier valor establecido.