Condividi tramite


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 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 per il flusso 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 come si farebbe 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. Fondamentalmente, l'impostazione 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 questo argomento e questo potrebbe essere indicato negli argomenti di RightToLeft riferimento per tali controlli XAML.

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

Se il FlowDirection valore di un oggetto è RightToLeft, determinati valori e 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 è stato impostato FlowDirection come RightToLeft per un oggetto RadioButton, l'elemento grafico del pulsante clickable 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 si capovolge 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 FlowDirection valore 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 nell'elemento FlowDirectionImage specificamente su RightToLefto impostare la FlowDirection proprietà nel code-behind. È consigliabile identificare l'elemento Image per direttiva x:Uid e specificare FlowDirection i valori come risorsa RESW, in modo che gli esperti di localizzazione possano modificare questo valore in un secondo momento senza modificare il codice o XAML.

MediaPlayerElement non eredita FlowDirection anche il valore da qualsiasi elemento padre. Se si imposta FlowDirection in modo esplicito come RightToLeft in MediaPlayerElement, l'area di visualizzazione multimediale viene capovolta orizzontalmente, analogamente alla modalità di scorrimento di 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 FlowDirection in WebView e WebViewBrush non causa eccezioni, ma qualsiasi valore impostato viene ignorato dal runtime.

Si applica a

Vedi anche