FrameworkElement.FlowDirection Propiedad

Definición

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 controla 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 a 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

La dirección en la que fluyen el texto y otros elementos de la interfaz de usuario dentro de su elemento primario, como un 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. Es posible que los controles XAML específicos tengan un control adicional dentro de sus plantillas o lógicas que respondan a FlowDirection de RightToLeft que no se indiquen en este tema, y esto puede tenerse en cuenta en los temas de referencia de esos controles XAML.

Un objeto hereda el valor FlowDirection 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 valor flowDirection 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, cambia el marco de coordenadas 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 como RightToLeft para un RadioButton, el gráfico del 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 la columna situada 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 InlineCollection tampoco cambia. Esto permite mezclar contenido en una aplicación de otro modo de derecha a izquierda, como incluir cadenas deliberadas de idioma inglés en una interfaz de usuario de idioma árabe. Cualquier cadena destinada a 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 valor FlowDirection de ningún elemento primario. Normalmente, solo se quiere un comportamiento de volteo de imágenes que sean 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 elemento FlowDirection en el elemento Image específicamente en RightToLeft o establecer la propiedad FlowDirection en el código subyacente. Considere la posibilidad de identificar el elemento Image por la directiva x:Uid y especificar los valores de FlowDirection como un recurso RESW, de modo que los expertos en localización puedan cambiar este valor más adelante sin cambiar el código XAML o .

MediaElement tampoco hereda el valor FlowDirection de ningún elemento primario. Si establece explícitamente FlowDirection como RightToLeft en MediaElement, el área de vista multimedia se voltea horizontalmente, de forma 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 contenido localizado ya tenga cualquier problema de derecha a izquierda corregido 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. Al establecer FlowDirection en WebView y WebViewBrush no se producen excepciones, pero el tiempo de ejecución omite cualquier valor establecido.

Se aplica a

Consulte también