2012-07-25 64 views
0

我现在正在玩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> 

但我不知道下一步该怎么做。如何将我的应用程序设置为在我的设备转换为肖像模式时执行这些动画?

+1

你有没有看过默认的模板?你可以看到他们在那里做了些什么 – 2012-07-25 13:44:40

回答

1

我已经分析了网格应用程序模板。我注意到那里的主页面继承了Common文件夹中存在的LayoutAwarePage类。 LayoutAwarePage类为WindowSizeChanged事件提供处理程序,该事件正在使用VisualStateManager在状态之间切换 - 这是我当前项目中缺少的部分。解决的办法是:

  1. 手动处理WindowsSizeChanged事件并使用VisualStateManager类和GotoState函数()方法
  2. 创建新项目(网格APP)和适合其当前项目。