2017-01-24 4 views
0

Beim Schreiben von gerätespezifischem XAML mithilfe von UWP können für jede Gerätefamilie unterschiedliche XAML-Ansichten erstellt werden. Zum Beispiel Track.DeviceFamily-Xbox.xaml. Diese Seite verwendet das gleiche Back-End wie Track.xaml, wird aber geladen, wenn die App auf Xbox verwendet wird.Laden der gerätespezifischen UI mit InitializeComponent()

Wir können auch eine URL an die InitializeComponent()-Methode übergeben, um eine bestimmte xaml-Seite zu laden.

Jetzt frage ich mich, ob ich diese Methoden zusammen kombinieren kann. In diesem Beispiel möchte ich die Xbox-Benutzeroberfläche im Vollbildmodus laden. Der folgende Code wäre der ideale Weg, es zu tun, aber .. gut ich bin hier, so dass es nicht funktioniert :)

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 ...  
    } 

Hat jemand irgendwelche Ideen, was ich tun kann? Gibt es eine Möglichkeit, die Xbox-spezifische Ansicht zu laden, oder sollte ich nur XAML-Ansicht erstellen, rufen Sie TrackXbox.xaml, und behandeln Sie dann Laden dieser Ansicht, wenn der Benutzer Vollbild ist oder auf der Xbox ausgeführt wird?

Antwort

2

Okay, was Sie versuchen, vielleicht nicht zu tun möglich sein, aber was ist der Weg, um diese Art von Funktionalität zu implementieren ist:

  1. Für Gerätespezifische Ansichten, mehrere Ordner der Gerätefamilie verwenden und eine XAML hinzufügen sieh darin an. Der Compiler lädt automatisch den XAML aus dem Ordner und den CodeBehind aus der normalen Ansicht. Weitere Informationen hierzu finden Sie unter here.

Aber was Sie wollen, ist die Größe zwischen mehreren Ansichten auf App zu schalten, so was Sie tun können, ist unter VisualStates so etwas wie verwenden:

<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> 

und jetzt, wenn Sie zwischen mehreren Ansichten in die wechseln wollen gleiche Gerätefamilie, was Sie können

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

weitere Informationen über Schalen visuelle Zustände here in Code-Behind von C# ist zu tun.

+0

Sorry für die Verzögerung, waren ziemlich beschäftigt. Ich bin nicht in der Lage, die Visual State-Methode leicht anzuwenden, da XAML für Xbox und PC sehr unterschiedlich ist. Aber danke für die Hilfe! –

Verwandte Themen