2011-02-25 50 views
3

我将解释什么,我试图在下列情况下做到:导航到另一个页面时方向改变

我有两个页面 - MainPage.xaml中(定向人像)和LandscapeLeft.xaml(方向LandscapeLeft)。

当用户在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的内容方向。

请问,有什么建议吗?

回答

5

如何把你的内容放在一个框架中。 定向事件触发时,更改框架内容而不是导航到其他页面。

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

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

+0

谢谢,作品非常出色。这就是我一直在寻找的! – Maku 2011-02-25 12:27:33

+0

没问题,很高兴我能帮到 – 2011-02-25 12:31:33

+0

是silverlight控件的框架吗? – gurehbgui 2011-11-23 12:33:13

3

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

+0

正如我写给斯图尔特,我有太多的控制页面到 通过可见性处理它们。 – Maku 2011-02-25 12:26:31

+0

@Maku抱歉应该更清楚了。我绝不会建议单独更改页面上每个项目的可见性。 – 2011-02-25 12:50:08

2

从“用户”的角度来看,我不认为你应该使用导航来达到这个效果。

导航与Back按钮非常紧密相关 - 所以用户通常也不会将其与设备方向绑定。

事情可以做大概是:

  • 考虑同时承载的纵向和在MainPage.xaml景观控制 - 只是改变取决于方向的2所控制的“知名度”。
  • 如果可能,请考虑对两个方向使用相同的控件 - 但对于2个方向适当的布局更改。

我已经编写了支持两种方向的应用程序 - 它们看起来表现非常好 - 您看到了哪些性能问题?

+0

谢谢你的建议。通常情况下,我会这样做,因为你上面写的是 ,但是我有太多的页面控件来处理它们的 知名度属性。 – Maku 2011-02-25 12:25:32

+0

难道你不能把它们全部放在两个面板中,然后改变每个父面板的可见性吗?或者你不能将每个单独的可见性绑定到某个共享属性上? – Stuart 2011-02-25 12:27:34

+0

当然可以做到。你是绝对正确的。不过,我更容易分别设计不同的方向页面(包含完全不同的内容)。无论如何,谢谢你的建议! – Maku 2011-02-25 15:29:01

相关问题