Ricerca…


Utilizzare AdaptiveTrigger per modificare il layout dell'interfaccia utente

Le applicazioni UWP possono essere eseguite in modalità finestra e su più dispositivi. Possono essere visualizzati su una vasta gamma di dimensioni dello schermo, dai telefoni di fascia bassa all'enorme schermo del mozzo di superficie. L'utilizzo del posizionamento relativo sarà sufficiente per molti scenari ma, con l'aumentare delle dimensioni della finestra, è sempre interessante modificare completamente il layout spostando i controlli della pagina in posizioni diverse.

In questo esempio, utilizzeremo un layout verticale su schermi stretti e un layout orizzontale su schermo ampio. Su enormi schermi ampi, cambieremo anche le dimensioni degli articoli.

<Border x:Name="item2"
        Background="Aquamarine"
        Width="50"
        Height="50">
    <TextBlock Text="Item 2"
               VerticalAlignment="Center"
               HorizontalAlignment="Center" />
</Border>

<Border x:Name="item3"
        Background="LightCoral"
        Width="50"
        Height="50">
    <TextBlock Text="Item 3"
               VerticalAlignment="Center"
               HorizontalAlignment="Center" />
</Border>

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>

        <VisualState x:Name="ultrawide">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="800" />
            </VisualState.StateTriggers>

            <VisualState.Setters>
                <Setter Target="mainPanel.Orientation" Value="Horizontal" />
                <Setter Target="item1.Width" Value="100" />
                <Setter Target="item1.Height" Value="100" />
                <Setter Target="item2.Width" Value="100" />
                <Setter Target="item2.Height" Value="100" />
                <Setter Target="item3.Width" Value="100" />
                <Setter Target="item3.Height" Value="100" />
            </VisualState.Setters>
        </VisualState>

        <VisualState x:Name="wide">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="600" />
            </VisualState.StateTriggers>

            <VisualState.Setters>
                <Setter Target="mainPanel.Orientation" Value="Horizontal" />
            </VisualState.Setters>
        </VisualState>

        <VisualState x:Name="narrow" />
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

Quando la finestra viene ridimensionata, il sistema confronta la larghezza della finestra corrente con la larghezza minima da AdaptiveTrigger. Se la larghezza corrente è maggiore o uguale alla larghezza minima, il trigger verrà attivato e verrà visualizzata la VisualState corrispondente.

Ecco l'output per i diversi stati

Stretto stretto

Largo largo

ultrawide ultrawide



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow