你的位置:首页 > 操作系统

[操作系统]windows 10 自适应布局


https://msdn.microsoft.com/library/windows/apps/dn894631.aspx

Use visual state triggers to build UI that can adapt to available screen space

Your UI may need to adapt to changes in window size. Adaptive visual states allows you to change the visual state in response to changes in the size of the window.

StateTriggers define a threshold at which a visual state is activated, which then sets layout properties as appropriate for the window size that triggered the state change.

In the following example, when the window size is 720 pixels or more in width the best-rated games are displayed to the right of the top free games panel and aligned with the top of the top free games panel. The visual state named wideView is triggered when the window is a minimum of 720 pixels wide, which then arranges the Best-rated games panel to appear to the right of, and aligned with the top of, the Top free games panel.

Visual state trigger example. Wide view

When the window is less than 720 pixels, the narrowView visual state is triggered because the wideViewtrigger is no longer satisfied and so no longer in effect. The narrowView visual state positions the Best-rated games panel below, and aligned with the left of, the Top paid games panel:

Visual state trigger example. Narrow view

Here is the XAML for the visual state triggers described above. The definition of the panels, alluded to by "..." below, has been removed for brevity.

XAML

 
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">  <VisualStateManager.VisualStateGroups>    <VisualStateGroup>      <VisualState x:Name="wideView">        <VisualState.StateTriggers>          <AdaptiveTrigger MinWindowWidth="720" />        </VisualState.StateTriggers>        <VisualState.Setters>          <Setter Target="best.(RelativePanel.RightOf)" Value="free"/>          <Setter Target="best.(RelativePanel.AlignTopWidth)" Value="free"/>        </VisualState.Setters>      </VisualState>      <VisualState x:Name="narrowView">        <VisualState.Setters>          <Setter Target="best.(RelativePanel.Below)" Value="paid"/>          <Setter Target="best.(RelativePanel.AlignLeftWithPanel)" Value="true"/>        </VisualState.Setters>        <VisualState.StateTriggers>          <AdaptiveTrigger MinWindowWidth="0" />        </VisualState.StateTriggers>      </VisualState>    </VisualStateGroup>  </VisualStateManager.VisualStateGroups>  ...</Grid>