如何在Windows 8.1商店应用程序中处理各种视图状态

时间:2014-04-24 16:00:09

标签: windows-8 windows-store-apps windows-8.1

我有Windows 8.0代码,我已经处理了ViewStates的UI,如Portrait,Landscape,填充和Snapped。但是对于Windows 8.1,Viewer可以将应用程序移动到任何大小。在这种情况下我如何处理UI。目前我这样做。

  private void QuestionPage_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        ApplicationViewState currentState = Windows.UI.ViewManagement.ApplicationView.Value;

        if (currentState.Equals(ApplicationViewState.Snapped))
        {
            VisualStateManager.GoToState(this, "Snapped", false);
        }
        else if (currentState.Equals(ApplicationViewState.FullScreenLandscape))
        {
            VisualStateManager.GoToState(this, "FullScreenLandscape", false);
        }
        else if (currentState.Equals(ApplicationViewState.Filled))
        {
            VisualStateManager.GoToState(this, "Filled", false);
        }
        else if (currentState.Equals(ApplicationViewState.FullScreenPortrait))
        {
            VisualStateManager.GoToState(this, "FullScreenPortrait", false);
        }
    }       

2 个答案:

答案 0 :(得分:1)

首先,您需要决定如何对尺寸进行分类。我们决定采用以下方式:

默认 - 横向全屏。 enter image description here

人像 - 人像全屏。 enter image description here

小 - 拍摄/调整到500 - 683宽,垂直方向 enter image description here

中等 - 拍摄/调整大小为684宽度及以上,垂直方向 enter image description here

所以基本上,中小尺寸是垂直布局,因为高度大于宽度。当“中”宽度大于其高度时,则它将是默认的横向大小。

对于DisplayOrientations CurrentOrientation = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().CurrentOrientation;,我们使用ApplicationViewState代替SizeChangedEventArgs

然后按如下方式定义尺寸:

//Small Size
if (e.NewSize.Width <= 683
    && (CurrentOrientation == DisplayOrientations.Landscape || CurrentOrientation == DisplayOrientations.LandscapeFlipped || CurrentOrientation == DisplayOrientations.None))

然后,您可以播放和定义您想要的尺寸。

答案 1 :(得分:0)

而不是基于ApplicationViewState的布局 - 使其取决于窗口的大小和宽高比。考虑用户如何使用您的应用以及在这些情况下哪种布局最有效。也许一个布局没问题,或者当窗口宽度小于某个值时,您可能想要将GridView布局切换为ListView布局 - 例如500px的。想想在这些情况下使用最舒适的东西。至少 - 测试在调整应用程序大小时布局不会崩溃。