2015-06-10 2 views
1

С телефоном Windows, есть ли событие, которое я могу зарегистрировать, когда устройство перешло в альбомный режим?Как получить событие изменения ориентации устройства под Windows Phone

Причина, по которой я спрашиваю об этом, заключается в том, что у нас есть представление с полем ввода. А когда в ландшафтном режиме, TextBox частично заблокирован клавиатурой. Поэтому я думаю, возможно, придется скрыть дополнительную информацию на странице, когда она находится в ландшафтном режиме (например, скрыть заголовок страницы и т. Д.).

Ниже приведен простой пример. Слева: перед отображением клавиатуры; Справа: после отображения клавиатуры.


я отправил еще один вопрос, связанный с этим и имеет лучшее решение, насколько я обеспокоен:

Why isn't the TextBox inside ContentDialog automatically scroll above keyboard

Но независимо от того, что здесь не является полный код для события смены ориентации:

// Define this in the class 
private SimpleOrientationSensor _simpleorientation; 

// Put hits in the Constructor 
_simpleorientation = SimpleOrientationSensor.GetDefault(); 
if (_simpleorientation != null) 
{ 
    _simpleorientation.OrientationChanged += new TypedEventHandler<SimpleOrientationSensor, SimpleOrientationSensorOrientationChangedEventArgs>(OrientationChanged); 
} 

// Event function 
private void OrientationChanged(object sender, SimpleOrientationSensorOrientationChangedEventArgs e) 
{ 
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
    { 
      // ... 
    }); 
} 
+0

Silverlight или XAML? –

+0

@IgorKulman, это для xaml. Просто добавлен новый тег. –

+0

[PhoneApplicationPage.OrientationChanged] (http://msdn.microsoft.com/en-us/library/windows/apps/microsoft.phone.controls.phoneapplicationpage.orientationchanged (v = vs.105) .aspx) или просто посмотрите на SizeChanged в окне, я даже потрудился с быстрым поиском этого? О, и PS, Silverlight использует xaml ... –

ответ

2

Ваш лучший выбор будет описывать событие Windows.Current.SizeChanged, если ширина больше высоты. Для этого есть датчик, но это немного проблематично, посмотрите на http://www.jayway.com/2014/10/06/detecting-orientation-in-universal-apps-windows-phone-8-1/.

.xaml

<ContentDialog 
    x:Class="App1.ContentDialog1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:App1" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    SizeChanged="SizeChangedEvent"> 

    <--! Other Code --> 

</ContentDialog> 

.cs

private void SizeChangedEvent(object sender, SizeChangedEventArgs e) 
{ 
} 
Смежные вопросы