【问题标题】:Managing Autorotation in Windows 8 metro apps在 Windows 8 Metro 应用程序中管理自动旋转
【发布时间】:2012-08-25 08:13:11
【问题描述】:

如何管理自动旋转 Windows 8 应用程序。
我已经浏览了 MSDN 的“旋转”示例,但它非常令人困惑,我需要做的是,我需要在纵向和横向时有完全不同的视图。 当我需要对纵向视图进行更改时,我已经为横向设计了视图。我需要一种方法来动态切换到重新洗牌的视图。

【问题讨论】:

  • 您是否查看过示例应用程序模板,尤其是 Grid 应用程序模板,并了解他们是如何做到的?我从那个示例模板中学到了负载。它仅通过更改属性(边距等)来进行一些布局更改,而其他一些 - 特别是 Snap 视图 - 通过完全替换 UI。如果您还没有,绝对值得学习。

标签: c# windows-8 microsoft-metro .net-4.5


【解决方案1】:

到目前为止,最简单的处理方法是从 LayoutAwarePage 而不是 Page 继承您的页面,并利用内部的视觉状态管理器Expression Blend 为您完成所有工作。

我在这里有一篇包含大量图片和可下载示例应用程序的完整文章:

http://jaredbienz.wordpress.com/2012/04/22/wp-to-w8-view-states-using-visual-state-manager/

【讨论】:

    【解决方案2】:

    您肯定会想在这里使用 FlipView 控件。我不知道您使用的是 JavaScript/HTML5 还是 C#/XAML,但无论哪种情况都可以使用。

    在 MSDN 上有一个很好的示例可以向您展示如何做到这一点,但是如果没有更多关于您的问题的背景信息,我不知道我还能提供多少帮助。

    http://code.msdn.microsoft.com/windowsapps/FlipView-control-sample-18e434b4

    【讨论】:

      【解决方案3】:

      您可以通过两种基本方式处理方向变化...

      1) 蛮力方法。连接到orientationchanged事件...

                  Windows.Graphics.Display.DisplayProperties.OrientationChanged += DisplayProperties_OrientationChanged;
      

      在事件句柄中,检查方向并导航到专门针对该方向进行布局的页面...

      if (Windows.Graphics.Display.DisplayProperties.CurrentOrientation == DisplayOrientations.Portrait)
                  this.Frame.Navigate(typeof(PortraitPage));
      

      优点...易于设计针对给定方向优化的页面 缺点...需要处理页面之间的导航和状态数据

      2) 创建一个使用视觉状态更改其布局的页面。您仍然可以连接到orientationchanged 事件,但是根据您命名视觉状态的方式调用VisualStateManager.GoToState(this,"Portrait",true).或类似的东西。

      优点...无需导航即可更改布局,您可以轻松添加酷炫的动画 缺点...如果您对高级 xaml 布局和视图状态不满意,更复杂的布局可能会更难

      如果您查看示例模板(除了空白之外),它们包含一个 LayoutAwarePage 为您处理视图状态转换,从而简化了一些事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-05
        • 1970-01-01
        • 1970-01-01
        • 2013-04-03
        • 1970-01-01
        • 2012-06-29
        相关资源
        最近更新 更多