2016-06-21 6 views
2

Ich mache eine Windows Universal App mit XAML und C#. Ich möchte visuelle Statusauslöser verwenden und mein Code unten ändert den Hintergrund des Hintergrunds basierend auf der Bildschirmbreite des Geräts, auf dem die App ausgeführt wird.Warum Minwindowheight nicht in XAML für adaptive Gestaltung funktioniert

<VisualStateManager.VisualStateGroups> 

     <VisualStateGroup> 

      <VisualState x:Name="Phone"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth = "0"/> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "#21539E" /> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="Tablets"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth = "720" /> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "Red" /> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="Laptop"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth = "1024" /> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "Black" /> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="PCs"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth = "1400" /> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "Green" /> 
       </VisualState.Setters> 

      </VisualState> 

     </VisualStateGroup> 

    </VisualStateManager.VisualStateGroups> 

Aber wenn ich das gleiche für die minimunwindheight Eigenschaft tue, funktioniert es nicht.

<VisualStateManager.VisualStateGroups> 

     <VisualStateGroup> 

      <VisualState x:Name="Phone"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowHeight = "0"/> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "#21539E" /> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="Tablets"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowHeight = "120" /> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "Red" /> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="Laptop"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowHeight = "1024" /> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "Black" /> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="PCs"> 

       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowHeight = "1400" /> 
       </VisualState.StateTriggers> 

       <VisualState.Setters> 
        <Setter Target = "Body.Background" 
       Value = "Green" /> 
       </VisualState.Setters> 

      </VisualState> 

     </VisualStateGroup> 

    </VisualStateManager.VisualStateGroups> 

Was mache ich falsch und wie kann ich die Mindestfensterhöhe korrekt umsetzen?

+1

Ihr Code sieht ziemlich vernünftig aus. Auf welcher Bildschirmauflösung testen Sie dies? Auch nicht sicher, ob die 'MinWindowHeight' mit 'effektiven Pixeln' einen Unterschied macht? –

Antwort

0

Ihr Code funktioniert für mich, das einzige Problem ist, dass Sie wahrscheinlich keine Änderung sehen, wie ich.

Es ist, weil die Größen von MinWindowHeight in 'effective pixels' sind, nicht in den Pixeln Ihres Monitors, so dass Sie Ihre Fenster nicht so viel strecken können, wie AdaptiveTrigger ausgelöst werden könnte.

Versuchen Sie, Ihre MinWindowHeight-Größe auf 400, 500, 600, 700 zu ändern, und Sie werden es sehen.

Verwandte Themen