2010-07-03 3 views
0

J'écris une application pour la table Surface de Microsoft. J'ai besoin de naviguer entre les écrans (Windows ou Pages). Le SurfaceSDK offre-t-il quelque chose qui s'apparente à une NavigationWindow? Si non, comment puis-je naviguer entre les écrans?Navigation dans Microsoft Surface

Répondre

3

le SDK ne propose aucune version spécifique à la surface de ces contrôles, principalement parce que ces navigations ne sont généralement pas appropriées dans les applications de surface. Avant de vous lancer dans la construction de votre application, vous pouvez consulter les conseils du Surface User Experience Guidelines et du design and development training videos, ce qui peut vous inspirer pour créer votre application de manière à offrir une expérience multitouch et multi-utilisateur plus convaincante.

0

Je suis totalement d'accord avec Josh que vous devriez vraiment repenser la façon dont vous construisez l'expérience utilisateur de votre application.

Mais vous pouvez simplement ouvrir une autre fenêtre au-dessus de la fenêtre actuelle. Cependant, avec des interactions complexes entre différentes fenêtres, cela est difficile à maintenir ...

0

Cela devrait être assez facile à construire soi-même. Dans le cas le plus simple, vous pouvez faire en sorte que votre fenêtre principale ait un contrôle de contenu quelque part qui héberge votre "écran". Lorsque vous avez besoin de changer d'écran, changez simplement la propriété Content du contentcontrol pour le contenu du nouvel écran (qui est probablement un usercontrol). Si vous voulez également des animations (comme des transitions de diapositives entre les écrans), vous devrez faire un peu plus de travail et je vous recommande de créer un contrôle séparé (utilisateur) qui ne gère que les changements d'écran.

<s:SurfaceWindow .... /> 
    <Grid x:Name="LayoutRoot"> 
    <ContentControl x:Name="screenHolder" /> 
    <s:SurfaceButton Click="changeScreenButton_Click" Content="Change to next screen" /> 
    </Grid> 
</s:SurfaceWindow> 

ensuite changer l'écran, vous feriez quelque chose comme ça dans le gestionnaire de clic:

screenHolder.Content = new MyNewScreenControl(); 

Dans une architecture MVVM, vous auriez typiquement ledit contenu lié à une propriété sur le viewmodel et que le viewmodel prenne soin de choisir quel "écran" afficher (en définissant par exemple sa propriété screen à un autre viewmodel). Une commande de liaison de l'interface utilisateur pourrait déclencher le changement d'écran, par exemple:

public ScreenViewModelBase CurrentScreen 
{ 
    get { return _currentScreen; } 
    set 
    { 
     if (_currentScreen != value) 
     { 
      _currentScreen = value; 
      RaisePropertyChanged("CurrentScreen"); 
     } 
    } 
} 

public ICommand ChangeToNextScreenCommand 
{ 
    get { return new RelayCommand(() => CurrentScreen = GetNextScreenFromList()); } 
} 

L'interface ci-dessus serait changé:

<s:SurfaceWindow .... /> 
    <!-- Assuming we have a data context setup which is our viewmodel above --> 
    <Grid x:Name="LayoutRoot"> 
    <ContentControl Content="{Binding CurrentScreen}"/> 
    <s:SurfaceButton Command="{Binding ChangeToNextScreen}" Content="Change to next screen" /> 
    </Grid> 
</s:SurfaceWindow>