2015-06-10 55 views
1

使用Windows Phone,是否有設備進入橫向模式時可以註冊的事件?如何在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) 
{ 
}