WP7 (Windows Phone 7) Блокировка ориентации телефона в XAML или C # - PullRequest
5 голосов
/ 13 мая 2011

Можно ли вручную заблокировать ориентацию телефона в Windows phone 7? Потому что я использую акселерометр для управления вращением кнопок с фиксированным интерфейсом.

Я пробовал это:

В XAML

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

И в коде позади:

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

Но пользовательский интерфейс все еще перемещается между пейзаж влево и пейзаж вправо ...

Спасибо.

Ответы [ 3 ]

5 голосов
/ 13 мая 2011

Нет способа предотвратить смещение между LandscapeLeft и LandScapeRight. Это по замыслу.

В качестве обходного пути вы можете вручную поворачивать / преобразовывать ваши элементы UIE в OnOrientationChanged, чтобы пользователь не видел разницы.
Я использовал эту технику, чтобы «фоновое» изображение не вращалось независимо от ориентации, но затем имел отдельный элемент управления, который выглядит как всплывающее окно, но который реагирует на изменения ориентации, отображаемые в верхней части изображения.

2 голосов
/ 08 мая 2014

Привет, я нашел решение, переопределив метод OnOrientationChanged . Меня устраивает. Это не влияет на системный трей и меню приложений, но страница остается в выбранной ориентации.

protected override void OnOrientationChanged(OrientationChangedEventArgs e)
{
    if (e.Orientation == PageOrientation.LandscapeLeft)
        base.OnOrientationChanged(e);
}
0 голосов
/ 12 августа 2013

добавьте this.SupportedOrientations = SupportedPageOrientation.Portrait; после InitializeComponent(); в MainPage() конструктор, чтобы заблокировать ориентацию в портретном режиме.У меня отлично работает.

...