我有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);
}
}
答案 0 :(得分:1)
首先,您需要决定如何对尺寸进行分类。我们决定采用以下方式:
默认 - 横向全屏。
人像 - 人像全屏。
小 - 拍摄/调整到500 - 683宽,垂直方向
中等 - 拍摄/调整大小为684宽度及以上,垂直方向
所以基本上,中小尺寸是垂直布局,因为高度大于宽度。当“中”宽度大于其高度时,则它将是默认的横向大小。
对于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的。想想在这些情况下使用最舒适的东西。至少 - 测试在调整应用程序大小时布局不会崩溃。