使弹出窗口以横向模式显示

时间:2014-03-12 19:36:45

标签: c# windows-phone-8 rotation orientation landscape-portrait

Hej

我有一个应用程序,我需要在横向模式下操作。问题是当我使用LiveId登录时,我必须将方向设置为Portrait,因为liveid仅支持纵向模式。

对我来说,问题是我想在横向模式下显示弹出窗口,即使系统处于纵向模式。

我尝试过旋转,并在旋转发生时做一些代码:

 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))
        {

        }
        // If not in portrait, move buttonList content to visible row and column.
        else
        {
        }
    } 

但没有成功。任何人都知道如何在横向模式下显示弹出窗口,即使方向发生变化也是如此。

我希望有人能提供帮助,因为几天之后,我一直无法解决问题。

1 个答案:

答案 0 :(得分:1)

您只需使用Composit Transform,并使用center,rotate和translate进行游戏。但是,您必须使用我上面提到的代码段。因为您需要为landscapeLeft和LandscapeRight

创建代码
if ((e.Orientation & PageOrientation.LandscapeLeft) == PageOrientation.LandscapeLeft)
        {
            rotate = false;
        }
        else if ((e.Orientation & PageOrientation.LandscapeRight) == PageOrientation.LandscapeRight)
        {
            rotate = true;
        }
        if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait))
        {
            if (!rotate) { 
                CompositeTransform Trans = new CompositeTransform();
                Trans.Rotation = 90;

                Trans.TranslateY=-200;
                Trans.TranslateX = -120;

                Trans.CenterY = 400;
                Trans.CenterX = 200;
                popup.RenderTransform = Trans;
            }
            else
            {
                CompositeTransform Trans = new CompositeTransform();
                Trans.Rotation = -90;

                Trans.TranslateY = 200;
                Trans.TranslateX = 200;
                Trans.CenterY = 400;
                Trans.CenterX = 200;
                popup.RenderTransform = Trans;
            }
            /*RotateTransform myRotateTransform = new RotateTransform();
            if (rotate)
            {
                myRotateTransform.Angle = 90;
                myRotateTransform.CenterY = popup.ActualHeight / 2;
                myRotateTransform.CenterX = popup.ActualWidth / 2;

                popup.RenderTransform = myRotateTransform;
            }*/

        }
        // If not in portrait, move buttonList content to visible row and column.
        else
        {
        }
  }

这就是我最终的结果,它解决了我的问题。