VisualState AdaptiveTrigger没有触发

SeB*_*eBo 6 xaml win-universal-app windows-10 visual-studio-2015

我在BUILD活动中观看了"从小屏幕到大屏幕:使用XAML构建通用Windows应用体验"的会话.http://channel9.msdn.com/Events/Build/2015/2-679

我想尝试使用AdaptiveTrigger,但它不能用我最小的Windows 10 UWP应用程序启动.

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="WindowSizeStates">
        <VisualState x:Name="WideState">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="800"/>
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="rect.Fill" Value="Beige" />
            </VisualState.Setters>
        </VisualState>
        <VisualState x:Name="NarrowState">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="0" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="rect.Fill" Value="White" />
            </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <RelativePanel>
        <Rectangle x:Name="rect" Width="100" Height="100" RelativePanel.AlignTopWithPanel="True" Fill="Beige"/>
    </RelativePanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

但没有任何反应.似乎触发器根本没有被触发.我错过了什么?

问候!

Jua*_*llo 18

是的,当您将组放在页面而不是第一个控件内时,会发生这种情况.尝试放入内部:

<Grid...>
   <VisualStateManager.VisualStateGroups>

</Grid>
Run Code Online (Sandbox Code Playgroud)

除非你想制作更复杂的自适应触发器,我在这里写了一篇文章:codeproject高级视图状态

  • 我注意到在VS2017的最后一个或三个版本中,我的AdaptiveTriggers无法正常工作,但仅在调试期间.如果我使用VS启动应用程序它们不起作用,如果我通过从他们执行的磁贴中单击应用程序来正常启动.:(我在VS2017 15.5.4.其他人? (2认同)