Compartilhar via


FrameworkElement.FlowDirection Propriedade

Definição

Obtém ou define a direção na qual o texto e outros elementos da interface do usuário fluem dentro de qualquer elemento pai que controla seu layout. Essa propriedade pode ser definida como LeftToRight ou RightToLeft. Definir FlowDirection como RightToLeft em qualquer elemento define o alinhamento à direita, a ordem de leitura da direita para a esquerda e o layout do controle para fluir da direita para a esquerda.

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 da propriedade

A direção em que o texto e outros elementos da interface do usuário fluem dentro de seu elemento pai, como um valor da enumeração . O valor padrão é LeftToRight.

Exemplos

Este exemplo de XAML ilustra como um contêiner de layout, como Grid , interpreta um valor de RightToLeft. Se você examinar a interface do usuário que esse XAML produz, o retângulo "Chartreuse" aparecerá no canto superior direito, não no canto superior esquerdo como faria quando FlowDirection é o LeftToRight padrão.

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

Comentários

O FlowDirection destina-se ao suporte do layout da direita para a esquerda para aplicativos. Basicamente, a configuração de FlowDirection como RightToLeft deve produzir um comportamento apropriado da direita para a esquerda e a renderização de qualquer controle XAML ao qual ele é aplicado. Controles XAML específicos podem ter mais tratamento em seus modelos ou lógica que responde a FlowDirection de RightToLeft que não é observado neste tópico, e isso pode ser observado nos tópicos de referência para esses controles XAML.

Um objeto herda o valor FlowDirection de seu pai na árvore de objetos. Qualquer elemento pode substituir o valor que obtém de seu pai. Se não for especificado, o FlowDirection padrão será LeftToRight.

Se o valor FlowDirection em um objeto for RightToLeft, determinados valores e comportamento do FrameworkElement serão alterados:

  • Dentro do elemento , o quadro de coordenadas de referência é invertido horizontalmente de modo que "(0, 0)" seja o canto superior direito. Isso afeta os valores retornados pela API de teste de clique, como FindElementsInHostCoordinates.
  • Se FrameworkElement for um Caminho ou outra Forma, seu conteúdo visual será invertido horizontalmente.
  • Para contêineres de layout, o quadro de coordenadas de referência é alterado. "(0, 0)" em um Canvas é o canto superior direito. A coluna "0" em uma Grade para fins de Grid.Column é a coluna mais à direita.
  • Dentro da composição de modelo de um controle, as mesmas alterações de layout se aplicam. Por exemplo, se você definir FlowDirection como RightToLeft para um RadioButton, o gráfico de botão clicável aparecerá à direita do conteúdo do rótulo de texto, pois a Grade dentro do modelo RadioButton agora trata "0" como a coluna mais à direita e o rótulo de texto está alinhado à direita.
  • A imagem tem um comportamento especial, consulte a seção "FlowDirection for Image" abaixo.

O texto em contêineres de texto, como TextBlock ou TextBox , não será invertido horizontalmente se FlowDirection for RightToLeft, nem a cadeia de caracteres inteira nem caracteres individuais ou glifos forem invertidos. A ordem dos elementos Embutidos em um InlineCollection também não é alterada. Isso permite misturar conteúdo em um aplicativo da direita para a esquerda, como incluir cadeias de caracteres deliberadas em inglês em uma interface do usuário do idioma árabe. Qualquer cadeia de caracteres destinada a ser uma fonte de texto para um contêiner de texto em que o idioma pretendido é um idioma da direita para a esquerda deve especificar essa cadeia de caracteres na representação Unicode apropriada, que será apresentada corretamente em um contêiner de texto. No entanto, um valor de FlowDirection como RightToLeft em um contêiner de texto altera o valor textAlignment padrão de modo que a borda direita do texto esteja alinhada à direita com os limites do contêiner de texto.

FlowDirection não tem nenhum efeito visível no texto em um elemento Glifos , mas altera o teste de clique do elemento e o quadro de coordenadas de referência.

FlowDirection para Image e MediaElement

Se você definir FlowDirection como RightToLeft para uma Imagem, o conteúdo visual de uma imagem será invertido horizontalmente. No entanto, um elemento Image não herda o valor FlowDirection de nenhum elemento pai. Normalmente, você só deseja um comportamento de inversão de imagem em imagens relevantes para o layout, mas não necessariamente para elementos que tenham texto inserido ou outros componentes que não façam sentido invertidos para um público da direita para a esquerda. Para obter o comportamento de inversão de imagem, você deve definir o elemento FlowDirection no elemento Image especificamente como RightToLeft ou definir a propriedade FlowDirection no code-behind. Considere identificar o elemento Image pela diretiva x:Uid e especificar valores FlowDirection como um recurso RESW, para que os especialistas em localização possam alterar esse valor posteriormente sem alterar o XAML ou o código.

MediaElement também não herda o valor FlowDirection de nenhum elemento pai. Se você definir explicitamente FlowDirection como RightToLeft no MediaElement, a área de exibição de mídia será invertida horizontalmente, semelhante à forma como uma imagem é invertida. Fazer isso deliberadamente deve ser ainda mais raro do que a Imagem, porque é provável que qualquer fonte de mídia usada no conteúdo localizado já tenha problemas da direita para a esquerda corrigidos no arquivo de mídia de origem.

FlowDirection para WebView e WebViewBrush

WebView e WebViewBrush não promovem nenhuma informação da direita para a esquerda para como o HTML é carregado. Se houver considerações da esquerda para a direita no conteúdo HTML, considere definir a diretiva x:Uid no elemento WebView e especificar qualquer valor de URI (Uniform Resource Identifier) webView.Source como um recurso RESW de forma de cadeia de caracteres. WebView e WebViewBrush também não herdam FlowDirection de nenhum elemento pai. A configuração de FlowDirection no WebView e no WebViewBrush não causa exceções, mas qualquer valor definido é ignorado pelo runtime.

Aplica-se a

Confira também