如何将水平屏幕切换到垂直屏幕

时间:2013-04-29 09:29:34

标签: windows-phone-8

当旋转手机屏幕时,如何将垂直(XAML)切换到另一个设计水平(XAML),而不是自动将旧垂直(XAML)布局为水平(XAML)

1 个答案:

答案 0 :(得分:2)

假设您当前使用StackPanel(或类似),并且已将SupportedOrientations指定为PortraitOrLandscape,则需要在Grid中设计您的网页constnet,然后捕获OrientationChanged事件并编写代码以重新定位网格中的UI元素。

有一个显示该技术的Quickstart Tutorial on MSDN

修改

您可以通过捕获OrientationChanged事件并使用Frame.Navigate显示不同的页面来更改为不同的XAML,但我认为这会导致一些重复的代码。或者,您可以对页面进行编码,以便只需在Grid中移动项目,就像MSDN exmaple代码所示:

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
    // Switch the placement of the buttons based on an orientation change.
    if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait))
    {
        Grid.SetRow(buttonList, 1);
        Grid.SetColumn(buttonList, 0);
    }
    // If not in portrait, move buttonList content to visible row and column.
    else
    {
        Grid.SetRow(buttonList, 0);
        Grid.SetColumn(buttonList, 1);
    }
}

替代方法是导航到其他页面 - 因此在您的肖像页面中,您可能有:

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
    // Switch to a different page based on an orientation change.
    if ((e.Orientation & PageOrientation.Landscape) == (PageOrientation.Landscape))
    {
        // switch to landscape orientation page
        NavigationService.Navigate(new Uri("/LandscapePage.xaml", UriKind.Relative)); 
    }
}

然后您将在横向页面中使用类似的代码,以检测方向更改并导航回纵向页面。