我正在玩Metro风格应用程序(.NET 4.5 RC [C#\ XAML],VS2012 RC),我有一个问题,我无法解决。
我想实现我的应用程序将在托管设备旋转时更改布局(+ -45)。我在XAML中准备了两个布局 - 一个用于横向,第二个用于肖像,我为视觉状态做了一些动画:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ApplicationViewStates">
<VisualState x:Name="FullScreenLandscape"/>
<VisualState x:Name="Filled"/>
<VisualState x:Name="FullScreenPortrait">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ControlContentLandscape" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ControlContentPortrait" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Snapped"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
但我不知道接下来该做什么。如何设置我的应用程序,当我的设备变为纵向模式时它将执行这些动画?
答案 0 :(得分:1)
我分析了网格应用模板。我注意到那里的主页继承自Common文件夹中的 LayoutAwarePage 类。 LayoutAwarePage 类为 WindowSizeChanged 事件提供处理程序,该事件使用 VisualStateManager 在状态之间切换 - 这是我当前项目中缺少的部分。解决方案是: