WP7 (Windows phone 7) Lock phone orientation in XA

2019-02-22 18:32发布

问题:

Is it possible to manualy lock the phone orientation in Windows phone 7 ? Because I'm using the accelerometer to handle buttons' rotation with a fixed UI.

I've tried that :

In the XAML

SupportedOrientations="Landscape" Orientation="LandscapeLeft"
OrientationChanged="PhoneApplicationPage_OrientationChanged"

And in the code behind :

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
    //Orientation locking
    //Do nothing
}

But the UI is still shifting between landscape left and landscape right...

Thanks.

回答1:

There is no way to prevent the shifting between LandscapeLeft and LandScapeRight. This is by design.

As a work around, you can manually rotate/transform your UIElements in the OnOrientationChanged so that the user doesn't see a difference.
I've used this technique to keep a "background" image from appearing to rotate regardless of orientation but then having a separate control which appears like a popup but which does respond to orientation changes show on top of the image.



回答2:

Hi I found a solution by overriding OnOrientationChanged method. It works for me. That do not affect system tray and application menu, but page stay in the selected orientation.

protected override void OnOrientationChanged(OrientationChangedEventArgs e)
{
    if (e.Orientation == PageOrientation.LandscapeLeft)
        base.OnOrientationChanged(e);
}


回答3:

add this this.SupportedOrientations = SupportedPageOrientation.Portrait; after InitializeComponent(); in MainPage() constructor to lock the orientation in Portrait mode. It works fine for me.