如何在Windows Phone下获取设备方向更改事件

时间:2015-06-10 21:04:14

标签: c# xaml windows-phone windows-phone-8.1

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

我问这个的原因是因为我们有一个带输入框的视图。在横向模式下,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, () =>
    {
          // ...
    });
}

1 个答案:

答案 0 :(得分: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)
{
}