如何获取 Windows Phone 下的设备方向改变事件

How to get the device orientation changed event under Windows Phone

使用 windows phone,当设备进入横向模式时,是否有我可以注册的事件?

我之所以这样问是因为我们有一个带有输入框的视图。在横向模式下,TextBox 被键盘部分遮挡。所以我想当它处于横向模式时可能必须在页面上隐藏一些额外的信息(例如,隐藏页面的标题等)。

下面是一个简单的例子。 左:显示键盘之前;右:显示键盘后。


我发布了另一个与此相关的问题,据我所知有更好的解决方案:

但无论如何,这是方向改变事件的完整代码:

// 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, () =>
    {
          // ...
    });
}

您最好的选择是描述 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)
{
}