2017-06-30 2 views
1

Ich habe Probleme, den Visual State Manager zu veranlassen, die HorizontalAlignment/VerticleAlignment des Hauptgitters meiner Anwendung korrekt zu ändern.UWP Grid.HorizontalAlignment ändern, um mit VisualStateManager zu strecken/zu gehen

Für Bildschirmgrößen, die auf dem Telefon verwendet werden, möchte ich, dass sich die HorizontalAlignment/VerticleAlignment streckt, wobei Height/Width auf Auto eingestellt ist.

Für Desktop sollte es links/oben mit Höhe/Breite auf eine bestimmte Größe festgelegt werden. Aus welchem ​​Grunde auch immer, wenn ich versuche zu Chaos mit der Ausrichtung wirkt es etwas eigenartig und nicht tut, was ich will

Hier ist ein Beispiel dafür, was ich versucht habe:

<VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="PhoneView"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="0"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="Grid.HorizontalAlignment" Value="Stretch"/> 
        <Setter Target="Grid.VerticleAlignment" Value="Stretch"/> 
        <Setter Target="Grid.Height" Value="Auto"/> 
        <Setter Target="Grid.Width" Value="Auto"/> 
       </VisualState.Setters> 
      </VisualState> 

      <VisualState x:Name="DesktopSmall"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="1920"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="Grid.HorizontalAlignment" Value="Left"/> 
        <Setter Target="Grid.VerticleAlignment" Value="Top"/> 
        <Setter Target="Grid.Height" Value="1280"/> 
        <Setter Target="Grid.Width" Value="1920"/> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

Ein weiteres Problem ist, wenn ich versuche zu setzen die maximale Auflösung auf 1920x1280, wenn ich die Höhe/Breite des Rasters manuell festlegen, schneidet die Windows-Taskleiste (die OS-Taskleiste, nicht die Anwendungs-App-Leiste/Befehlsleiste) einen Teil meiner Anwendung ab. Ich möchte die Ausrichtung nicht strecken, weil ich versuche, die Echtzeitdehnung der Ansicht zu begrenzen.

Danke! Lassen Sie mich wissen, wenn mehr Details benötigt werden.

+0

Ist 'Grid' der Name Ihres' Grid'? Wenn ja, ändern Sie es in einen anderen Namen. Wenn nein, dann benutze 'Grid' Namen anstelle von' Grid'. –

+0

Grid ist nicht der Name meines Grids. Ich habe "Container" verwendet, also Container.HorizontalAlignment zum Beispiel. –

+0

Ich habe Gitter nur in diesem Beispiel als Platzhalter verwendet, daher wäre es klar, dass es sich um ein Gitter handelt, das ich verwendet habe. –

Antwort

0

Es sollte so schreiben -

<Setter Target="Container.(Grid.HorizontalAlignment)" Value="Left" /> 
<Setter Target="Container.(Grid.VerticalAlignment)" Value="Top" /> 

I here für die Erstellung von visuellen Zustand Setter ein paar Tipps, ohne eine einzige Zeile Code zu schreiben.

+0

Ich werde das versuchen, danke. Ich erinnere mich jetzt, dass das Nisten manchmal wirklich seltsam ist. Hätten Sie eine Idee, warum visuelle Zustände nicht funktionieren, wenn der VisualStatemanager in einem Pivot DataTemplate platziert wird? Ich habe es mit Listenansichten ohne Probleme gemacht, aber es wirkt funky im Pivot. –

+0

Sie müssen die Daten in Ihrer Datenvorlage in ein 'UserControl' verpacken. Bitte sehen Sie meine Antwort [hier] (https://stackoverflow.com/questions/32088500/adaptivetrigger-and-datatemplate). –

+0

Ok, also habe ich versucht, wie du es vorgeschlagen hast und ursprünglich hat es eine Ausnahme geworfen. Ich habe deine zweite Methode ausprobiert und es scheint zu funktionieren. Der Code, den es automatisch schreibt, ist: '' –

Verwandte Themen