Vermutlich wird es zwei Wege geben. Schlichtweg ignorieren oder Design Orgien mit Expression Blend. Windows 8 Anwendungen können in mindestens vier verschiedenen Layouts daher kommen.
Relativ klar ist Hochformat oder Querformat. Man kann in Visual Studio 11 die METRO styled APP auch dazu zwingen in einem bestimmten Format zu starten.
Dazu kommt noch der jeweilige Flipped Mode der quasi das Bild um 180 Grad dreht und so den physikalischen Windows 8 Start Button nach oben bringt.
Je nach Anwendungstyp kann es sinnvoll sein sich als Entwickler vorher festzulegen. Typische Reader werden meist im Hochformat arbeiten. Videos wird man eher quer betrachten.
Dann sind da noch die flexiblen Anwendungen die alles können. Die Weather APP wird gerne als Beispiel genannt. Es gibt Fullscreen (ganzer Bildschirm), Snapped (Randdbereich) und Filled(das dazwischen. Je in der Landscape und Portrait Variante.
Das erkennen des aktuellen Zustandes gestaltet WinRT noch einfach
Private Sub UserControl36_Loaded(sender As Object, e As RoutedEventArgs)
Handles Me.Loaded
AddHandler ViewManagement.ApplicationView.GetForCurrentView().ViewStateChanged,
AddressOf gedreht
End Sub
Private Async Function gedreht(sender As ApplicationView,
args As ApplicationViewStateChangedEventArgs) As Task
Dim msg = New MessageDialog(args.ViewState.ToString)
Await msg.ShowAsync
End Function
Wie aber gestaltet man den XAML Code dazu? Die Beispiele arbeiten alle mit Viewstates. Es findet sich folgender VB.NET Beispiel Code dazu um den State zu wechseln.
Private Sub MainPage_ViewStateChanged(ByVal sender As ViewManagement.ApplicationView,
ByVal args As Windows.UI.ViewManagement.ApplicationViewStateChangedEventArgs)
Select Case args.ViewState
Case Windows.UI.ViewManagement.ApplicationViewState.Filled
VisualStateManager.GoToState(Me, "Fill", False)
Case Windows.UI.ViewManagement.ApplicationViewState.FullScreenPortrait
VisualStateManager.GoToState(Me, "FullScreenPortrait", False)
Case Windows.UI.ViewManagement.ApplicationViewState.FullScreenLandscape
VisualStateManager.GoToState(Me, "FullScreenLandscape", False)
Case Windows.UI.ViewManagement.ApplicationViewState.Snapped
VisualStateManager.GoToState(Me, "Snapped", False)
Case Else
End Select
End Sub
Visual Studio 11 kann zwar exzellent XAML editieren, aber keine Animationen und damit auch Viewstates. Wenn man das nicht in XAML runtertippen möchte bleibt nur Expression Blend.
Dort kann man für jeden Status Animationen definieren. Diese können Controls auf dem Userinterface bewegen, drehen oder auch schmäler machen. Man kann auch komplette Controls ein und Ausblenden und so aus einem Grid eine Listview machen. Bisher kenne ich keine Anwendung die das konsequent umsetzt.
So wird beim Kalender aus einer Tagesansicht
in der snapped Darstellung eine Monats Übersicht,
Auch wenn der Visual State Manager von Expression Blend hilft, ein vollständiger Designer für die Sichten ist er nicht. So gehe ich davon aus das die ersten Windows 8 METRO Anwendungen aus dem Store alle nur auf eine Sicht hin optimiert sind.
Nur wenige APPs werden auch im ersten Schritt die Notwendigkeit haben sozusagen aktiv auf der Seite zu laufen, gerade weil auch über Toasts Anwendungen im Suspended Modus sich beim Benutzer melden können.