我如何管理自动旋转 Windows 8 应用程序。
我已经浏览了 MSDN 的“旋转”示例,但它非常令人困惑,我需要做的是,我需要在纵向和横向时有完全不同的视图。当我需要对纵向视图进行更改时,我已经为横向设计了视图。我需要一种在重新洗牌视图的视图之间动态切换的方法。
3 回答
到目前为止,处理此问题的最简单方法是从LayoutAwarePage而不是Page继承您的页面,并利用 Expression Blend 中的 Visual State Manager 为您完成所有工作。
我有一篇完整的文章,里面有很多图片和一个可下载的示例应用程序:
http://jaredbienz.wordpress.com/2012/04/22/wp-to-w8-view-states-using-visual-state-manager/
您肯定会想在这里使用 FlipView 控件。我不知道您使用的是 JavaScript/HTML5 还是 C#/XAML,但在任何一种情况下都可以使用。
MSDN 上有一个很好的示例来向您展示如何做到这一点,但是如果没有更多关于您的问题的上下文,我不知道我还能提供多少帮助。
http://code.msdn.microsoft.com/windowsapps/FlipView-control-sample-18e434b4
您可以通过两种基本方式处理方向更改...
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 布局和 viewStates 不满意,更复杂的布局可能会更难
如果您查看示例模板(除了空白之外),它们包含一个 LayoutAwarePage 为您处理视图状态转换,从而简化了一些事情。