Scrivo applicazioni Android da alcuni anni e ora sto sviluppando un'applicazione Windows Store/Windows 8.Gestione di orientamenti diversi durante lo sviluppo di applicazioni Windows 8 Store
Sono molto confuso su come scrivere diversi layout dello schermo per l'orientamento orizzontale e verticale.
In Android, tutto ciò che dobbiamo fare è scrivere 2 layout, uno per il ritratto e un altro per il paesaggio, seguendo alcune convenzioni sui nomi dei file, e quando ruotiamo il dispositivo la piattaforma cambia automaticamente il layout dello schermo.
Ho cercato su Google una soluzione per fare lo stesso con la mia applicazione Windows 8, e tutto ciò che ho trovato era una soluzione che utilizzava gruppi di stati visivi e stati visivi, inserendo nello stesso XAML alcune modifiche che accadono al nostro widget quando ruotiamo il dispositivo.
Ad esempio, per fare un blocco di testo cambiare la sua posizione quando ho ruotare il dispositivo in verticale:
<VisualState x:Name="FullScreenPortrait" >
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Grid.ColumnSpan)" Storyboard.TargetName="GridViewTitle">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<x:Int32>3</x:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Margin)" Storyboard.TargetName="GridViewTitle">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Thickness>0,10,10,807</Thickness>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
Non sembra molto pulito e semplice per me, e anche farlo utilizzando il Visual Studio approccio di trascinamento e rilascio di widget per generare codice Ho l'impressione che ci debba essere una soluzione più semplice e più pulita di quello che sto facendo.
Quindi la mia domanda è: c'è una soluzione più semplice per scrivere i layout XAML per ogni orientamento o sto andando a destra, ma in modo difficile?
Grazie!
Hmm. Suona bene, ma nel mio codice, dove devo gestire il contenuto selezionato di alcune immagini della griglia, dovrei fare qualcosa come 'if (portrait) {handle_my_gridview_portrait(); } else {handle_my_gridview_landscape(); } '. Comunque, è meglio della mia attuale soluzione. Grazie! –
Gli esempi sopra mostrano solo come è possibile rilevare diversamente il cambio di orientamento. Tuttavia, è possibile modificare il valore in DataContext e utilizzare Binding per evitare code-behind. – kimsk
Entrambe le risposte a queste domande erano buone, ma le tue erano più adeguate al mio problema. Grazie e scusa per il ritardo! –