2017-01-24 4 views
0

Lors de l'écriture de XAML spécifique à un périphérique à l'aide de UWP, nous pouvons créer différentes vues XAML pour chaque famille de périphériques. Par exemple, Track.DeviceFamily-Xbox.xaml. Cette page utilise le même back-end que Track.xaml mais sera chargée lors de l'utilisation de l'application sur Xbox.Chargement de l'interface utilisateur spécifique du périphérique à l'aide de InitializeComponent()

Nous pouvons également transmettre une URL à la méthode InitializeComponent() pour charger une page xaml spécifique.

Maintenant, je me demande si je peux combiner ces méthodes ensemble. Dans cet exemple, je voudrais charger l'interface utilisateur Xbox en plein écran. Le code suivant serait le moyen idéal de le faire, mais .. eh bien je suis ici, donc ça ne marche pas :)

public Track() 
{ 
     // If the app is full screen, we can use the Xbox UI 
     if (App.IsFullScreen) 
     { 
      InitializeComponent(new Uri("ms-appx:///Views/Track.DeviceFamily-Xbox.xaml", UriKind.Absolute)); 
     } 
     else 
     { 
      InitializeComponent(); 
     } 

     // etc ...  
    } 

Quelqu'un at-il eu des idées avec ce que je peux faire? Existe-t-il un moyen de charger l'affichage spécifique Xbox, ou devrais-je simplement créer une vue XAML, l'appeler TrackXbox.xaml, puis gérer le chargement de cette vue lorsque l'utilisateur est en plein écran ou en cours d'exécution sur la Xbox?

Répondre

2

Ok Donc ce que vous essayez de faire peut-être pas possible, mais quelle est la façon de mettre en œuvre ce type de fonctionnalité est:

  1. Pour des vues spécifiques de l'appareil, utilisez plusieurs dossiers de la famille de l'appareil et ajouter un XAML voir dedans. Le compilateur charge automatiquement le xaml du dossier et le codebehind de la vue normale. Plus d'informations sur ce here.

Mais ce que vous voulez est de basculer entre plusieurs vues sur l'application redimensionner si ce que vous pouvez faire est d'utiliser VisualStates quelque chose comme ci-dessous:

<VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="Normal"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="900"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <--For larger screensizes--> 
        <Setter Value="3" Target="MyDummyButton.(Grid.RowSpan)"/> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="Mobile"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="0"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 

        <Setter Value="1" Target="MyDummyButton.(Grid.RowSpan)"/> 
             </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

et maintenant lorsque vous souhaitez basculer entre plusieurs vues dans le même famille d'appareils, ce que vous pouvez faire est de C# dans codeBehind

VisualStateManager.GoToState(this, "Normal", useTransitions); 

plus d'informations sur les états de commutation visuels here.

+0

Désolé pour le retard, ont été très occupés. Je suis incapable d'appliquer facilement la méthode Visual State car le XAML est très différent pour Xbox et PC. Mais merci pour l'aide! –