FrameworkElement.FlowDirection Proprietà

Definizione

Ottiene o imposta la direzione in cui il testo e altri elementi dell'interfaccia utente vengono trasmessi all'interno di qualsiasi elemento padre che controlla il layout. Questa proprietà può essere impostata su LeftToRight o RightToLeft. L'impostazione di FlowDirection su RightToLeft su qualsiasi elemento imposta l'allineamento a destra, l'ordine di lettura a destra a sinistra e il layout del controllo da destra a sinistra.

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

Valore della proprietà

Direzione in cui il testo e altri elementi dell'interfaccia utente vengono trasmessi all'interno dell'elemento padre, come valore dell'enumerazione. Il valore predefinito è LeftToRight.

Esempio

Questo esempio XAML illustra come un contenitore di layout, ad esempio Grid , interpreta un valore di RightToLeft. Se si esamina l'interfaccia utente generata da questo CODICE XAML, il rettangolo "Chartreuse" viene visualizzato in alto a destra, non nella parte superiore sinistra quando FlowDirection è il valore predefinito 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>

Commenti

FlowDirection è destinato al supporto del layout da destra a sinistra per le app. In pratica, l'impostazione di FlowDirection su RightToLeft deve produrre un comportamento appropriato da destra a sinistra e il rendering di qualsiasi controllo XAML a cui viene applicato. I controlli XAML specifici possono avere ulteriore gestione all'interno dei modelli o della logica che rispondono a FlowDirection di RightToLeft non annotati in questo argomento e questo potrebbe essere indicato negli argomenti di riferimento per tali controlli XAML.

Un oggetto eredita il valore FlowDirection dal relativo padre nell'albero degli oggetti. Qualsiasi elemento può eseguire l'override del valore ottenuto dal relativo elemento padre. Se non specificato, flowDirection predefinito è LeftToRight.

Se il valore FlowDirection in un oggetto è RightToLeft, alcuni valori e il comportamento di FrameworkElement cambieranno:

  • All'interno dell'elemento, il frame di coordinate di riferimento viene capovolto orizzontalmente in modo che "(0, 0)" sia l'angolo superiore destro. Ciò influisce sui valori restituiti dall'API di hit test, ad esempio FindElementsInHostCoordinates.
  • Se FrameworkElement è un percorso o un altro oggettoShape, il relativo contenuto visivo viene capovolto orizzontalmente.
  • Per i contenitori di layout, il frame di coordinate delle modifiche di riferimento. "(0, 0)" in un canvas è l'angolo superiore destro. La colonna "0" in una griglia a scopo di Grid.Column è la colonna più a destra.
  • All'interno della composizione del modello di un controllo, si applicano le stesse modifiche al layout. Ad esempio, se si imposta FlowDirection come RightToLeft per un oggetto RadioButton, l'elemento grafico del pulsante selezionabile verrà visualizzato a destra del contenuto dell'etichetta di testo, perché griglia all'interno del modello RadioButton considera ora "0" come colonna più a destra e l'etichetta di testo è allineata a destra.
  • L'immagine ha un comportamento speciale, vedere la sezione "FlowDirection for Image" di seguito.

Il testo nei contenitori di testo, ad esempio TextBlock o TextBox , non viene capovolto orizzontalmente se FlowDirection è RightToLeft, né l'intera stringa né i singoli caratteri o glifi vengono capovolti. L'ordine degli elementi Inline in un Oggetto InlineCollection non cambia né. Ciò consente di combinare il contenuto in un'app da destra a sinistra diversamente, ad esempio incluse le stringhe di lingua inglese intenzionale in un'interfaccia utente della lingua araba. Qualsiasi stringa destinata a essere un'origine di testo per un contenitore di testo in cui la lingua prevista è una lingua da destra a sinistra deve specificare tale stringa nella rappresentazione Unicode appropriata, che verrà visualizzata correttamente in un contenitore di testo. Tuttavia, un valore di FlowDirection come RightToLeft in un contenitore di testo modifica il valore predefinito TextAlignment in modo che il bordo destro del testo sia allineato a destra con i limiti del contenitore di testo.

FlowDirection non ha alcun effetto visibile sul testo in un elemento Glyphs , ma modifica il test di hit testing dell'elemento e il frame di coordinate di riferimento.

FlowDirection per Image e MediaElement

Se si imposta FlowDirection come RightToLeft per un'immagine, il contenuto visivo di un'immagine viene capovolto orizzontalmente. Tuttavia, un elemento Image non eredita il valore FlowDirection da qualsiasi elemento padre. In genere si vuole solo un comportamento di capovolgimento delle immagini rilevanti per il layout, ma non necessariamente per elementi che hanno testo incorporato o altri componenti che non avrebbe senso capovolgere per un pubblico da destra a sinistra. Per ottenere il comportamento di capovolgimento dell'immagine, è necessario impostare l'elemento FlowDirection sull'elemento Image in modo specifico su RightToLeft oppure impostare la proprietà FlowDirection nel code-behind. È consigliabile identificare l'elemento Image per direttiva x:Uid e specificare i valori FlowDirection come risorsa RESW, in modo che gli esperti di localizzazione possano modificare questo valore in un secondo momento senza modificare il codice o XAML.

MediaElement non eredita anche il valore FlowDirection da qualsiasi elemento padre. Se si imposta in modo esplicito FlowDirection come RightToLeft in MediaElement, l'area di visualizzazione multimediale viene capovolta orizzontalmente, analogamente a come viene capovolto un'immagine . Questa operazione dovrebbe essere ancora più rara di Image, perché è probabile che qualsiasi origine multimediale usata nel contenuto localizzato abbia già problemi da destra a sinistra corretti nel file multimediale di origine.

FlowDirection per WebView e WebViewBrush

WebView e WebViewBrush non promuovono informazioni da destra a sinistra per il caricamento del codice HTML. Se sono presenti considerazioni da sinistra a destra nel contenuto HTML, prendere in considerazione l'impostazione della direttiva x:Uid nell'elemento WebView e specificare qualsiasi valore di WebView.Source Uniform Resource Identifier (URI) come risorsa RESW stringa-form. WebView e WebViewBrush non ereditano FlowDirection da qualsiasi elemento padre. L'impostazione di FlowDirection in WebView eWebViewBrush non causa eccezioni, ma qualsiasi valore impostato viene ignorato dal runtime.

Si applica a

Vedi anche