方向更改时导航到另一个页面

时间:2011-02-25 11:29:40

标签: c# windows-phone-7

我将解释我在以下实例上要做的事情:

我有两个页面 - MainPage.xaml(orientation Portrait)和LandscapeLeft.xaml(orientationLeft方向)。

当用户在Lanscape位置旋转手机时,我想从MainPage.xaml导航到LandscapeLeft.xaml

我做了如下:

XAML:

   SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
代码背后的代码:

   protected override void OnOrientationChanged(OrientationChangedEventArgs e)
   {
       switch (e.Orientation)
       {
           case PageOrientation.LandscapeLeft:
               NavigationService.Navigate(new Uri("/LandscapeLeft.xaml", UriKind.RelativeOrAbsolute));
               break;
       }
       base.OnOrientationChanged(e);
   }

当我将手机从PortraitUp旋转到LandscapeLeft位置时会发生什么:
首先,MainPage.xaml的内容旋转横向,然后加载LandscapeLeft.xaml。

我想要做的是消除MainPage.xaml的内容轮换过程。它看起来不太好并影响性能。简单地说,当我旋转手机时,我想要加载LandscapeLeft.xaml 没有事先更改MainPage.xaml的内容方向。

请提出任何建议?

3 个答案:

答案 0 :(得分:5)

如何将内容放在框架中。 触发方向事件时,请更改帧内容,而不是导航到其他页面。

 ...
         case PageOrientation.LandscapeLeft:
         FrmContents= new LandscapeLeft();
 ...  

这应该解决您的性能问题。

答案 1 :(得分:3)

只需将所有功能放在一个页面上,然后根据方向更改显示的内容。

答案 2 :(得分:2)

从“用户”角度来看,我认为你不应该使用Navigation来实现这种效果。

导航与Back按钮紧密相关 - 因此用户通常也不希望将其与设备方向联系起来。

你可能做的事情是:

  • 考虑在mainpage.xaml中托管纵向和横向控件 - 只需根据方向更改2个控件的“可见性”。
  • 如果可能,请考虑对两个方向使用相同的控件 - 但是对于两个方向进行适当的布局更改。

我编写的应用程序支持两种方向 - 它们似乎表现得非常好 - 您看到的性能问题是什么?