Partilhar 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 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 padrão 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>

Comentários

FlowDirection destina-se ao suporte do layout da direita para a esquerda para aplicativos. Basicamente, a configuração 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 tratamento adicional dentro de seus modelos ou lógica que responde a FlowDirection isso RightToLeft 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 FlowDirection valor 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 FlowDirection valor 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)" será 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 uma Tela é o canto superior direito. A coluna "0" em uma Grade para fins de Grid.Column é a coluna mais à direita.
  • Na 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, confira 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 serão 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 de idioma inglês deliberadas em uma interface do usuário de 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 Glyphs , 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 FlowDirection valor 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 fariam sentido invertido para um público da direita para a esquerda. Para obter o comportamento de inversão de imagem, você deve definir o FlowDirection elemento no elemento Image especificamente como RightToLeftou definir a FlowDirection propriedade em code-behind. Considere identificar o elemento Image pela diretiva x:Uid e especificar FlowDirection valores como um recurso RESW, para que os especialistas em localização possam alterar esse valor posteriormente sem alterar o XAML ou o código.

MediaPlayerElement também não herda FlowDirection valor de nenhum elemento pai. Se você definir FlowDirection explicitamente como RightToLeft no MediaPlayerElement, 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 Image, pois é 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 sobre 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 (Identificador de Recurso Uniforme) 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 FlowDirection em WebView e WebViewBrush não causa exceções, mas qualquer valor definido é ignorado pelo runtime.

Aplica-se a

Confira também