Windows Phone页面导航方向已更改 - 页面查看问题

时间:2014-05-30 07:25:30

标签: xaml animation windows-phone-8 navigation orientation

我有三个xaml页面,例如MainPage.xaml(空),PageOne.xaml和PageTwo.xaml。 加载MainPage后,我加载PageOne.xaml的内容。 我希望实现的是在方向改变时从PageOne导航到PageTwo。

我已经使用此线程成功实现了这一点 - Navigate to another page when orientation changed通过更改框架中的内容来消除内容轮换过程:(((PhoneApplicationFrame)Application.Current.RootVisual))。Content = new PageOne() ;

问题是: 在纵向模式下触发应用程序时,PageOne按预期以纵向模式显示。但是当我将手机旋转到横向时,MainPage按预期加载PageTwo的内容,但是在纵向模式。我希望它加载横向模式

我已经将XAML中的SupportedOrientations(在代码隐藏中尝试过)设置为PageOne的Portrait和PageTwo的Landscape,但这并没有帮助。我猜电话在动态加载内容时无法检测方向变化。有什么建议吗?

使用NavigationService看起来并不好看 - 在第一页旋转然后导航。

我也希望在页面之间实现旋转动画,但我认为在我的情况下这是不可能的。

以下是MainPage.xaml.cs中的一些代码:

private void PageOrientationChanged(object sender, OrientationChangedEventArgs e)
{
       if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait))
       {
                (((PhoneApplicationFrame)Application.Current.RootVisual)).Content = new PageOne();
       }
       else
       {
                (((PhoneApplicationFrame)Application.Current.RootVisual)).Content = new PageTwo();
       }
}

PageTwo在MainPage处于横向模式时加载,但显示为纵向模式。好像我只在纵向模式下加载PageTwo。

1 个答案:

答案 0 :(得分:0)

试试这个,它应该有效

        private void PhoneApplicationPage_OrientationChanged(
object sender, OrientationChangedEventArgs e)
        {
            if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait))
            {
                //Load Data for Portrait PageOrientation
            }
            else
            {
                //Load Data for Landscape PageOrientation
            }
        }