Ich schreibe seit einigen Jahren Android-Anwendungen und entwickle jetzt eine Windows Store/Windows 8-Anwendung.Umgang mit verschiedenen Orientierungen bei der Entwicklung von Windows 8 Store-Anwendungen
Ich bin sehr verwirrt darüber, wie man verschiedene Bildschirmlayouts für Hoch- und Querformat ausgibt.
In Android müssen wir nur zwei Layouts schreiben, eins für Hochformat und ein anderes für Querformat, wobei wir einigen Namenskonventionen für die Dateinamen folgen. Wenn wir das Gerät drehen, ändert die Plattform das Bildschirmlayout automatisch.
Ich google für eine Lösung, um das gleiche in meiner Windows 8-Anwendung zu tun, und alles, was ich gefunden habe, war eine Lösung mit Visual State Groups und Visual States, in dem gleichen XAML einige Modifikationen, die unsere passieren Widgets, wenn wir das Gerät drehen.
Zum Beispiel macht einen Textblock seine Position ändern, wenn ich das Gerät im Hochformat drehen:
<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>
Es sieht nicht sehr sauber und einfach zu mir, und auch der Visual Studio zu tun, dass die Verwendung Ansatz zum Ziehen und Ablegen von Widgets, um Code zu generieren Ich habe den Eindruck, dass es eine einfachere und sauberere Lösung als das, was ich mache, sein muss.
Also meine Frage ist: Gibt es eine einfachere Lösung, um XAML-Layouts für jede Orientierung zu schreiben oder gehe ich richtig, aber schwer?
Danke!
Hmm. Das hört sich gut an, aber in meinem Code, wo ich mit dem ausgewählten Inhalt einiger Rasteransichten umgehen muss, sollte ich etwas wie 'if (portrait) {handle_my_gridview_portrait(); } else {handle_my_gridview_landscape(); } '. Jedenfalls ist es besser als meine derzeitige Lösung. Vielen Dank! –
Die obigen Beispiele zeigen nur, wie Sie die Orientierungsänderung unterschiedlich erkennen können. Sie können jedoch den Wert im DataContext ändern und Binding verwenden, um Code-Behind zu vermeiden. – kimsk
Beide Antworten auf diese Fragen waren gut, aber Ihre war meinem Problem angemessener. Danke und Entschuldigung für die Verzögerung! –