我想确定WP7应用中设备的当前方向。我不想处理OrientationChange事件,因为我在页面打开时需要当前的方向。
我一直试图用我在论坛中找到的这段代码来做到这一点:
((PhoneApplicationFrame)Application.Current.RootVisual).Orientation
然而,即使我将设备侧向转动,这也始终与PortraitUp一起返回。顺便说一下,我试图用模拟器做这个,所以它可能是一个模拟器bug。
由于
答案 0 :(得分:4)
只是在模拟器和我的设备上测试过它。在模拟器中,它就像Mark一样,它总是返回PotraitUp。
但是,如果我在我的设备上测试它,则直接返回正确的方向。所以可能正如马克暗示这是一个模拟器错误。
答案 1 :(得分:3)
这对我有用..而且它工作得很完美..希望这有助于其他人......
PageOrientation orient = Orientation;
CheckOrientation(orient);
上面的代码获取当前页面的方向。用你班上的方法来称呼它。然后,您可以执行以下
private void CheckOrientation(PageOrientation orient)
{
if (orient == PageOrientation.LandscapeLeft || orient == PageOrientation.LandscapeRight)
{
//Do your thing
}
else if (orient == PageOrientation.PortraitUp || orient == PageOrientation.PortraitDown)
{
//Do your thing
}
}
答案 2 :(得分:2)
我发现了这个:
((PhoneApplicationFrame)Application.Current.RootVisual).Orientation
在PageLoaded中没有正确的方向。
它也没有在第一个LayoutUpdated事件中返回正确的方向。但是,还有第二个LayoutUpdated事件,它提供了正确的事件。 在两个LayoutUpdated事件之间,如果最后一页是另一个方向,那么也会有一个OrientationChanged事件。
所以没有其他解决方案让我等待OrientationChanged事件发生(因为用户可以从仅支持Portrait模式进入此页面的唯一页面)。
答案 3 :(得分:0)
您的应用程序必须支持横向方向才能接收它。如果你只支持肖像,那么你所提供的属性中你永远不会得到,也不会支持OrientationChanged事件和横向。
答案 4 :(得分:0)
解决方案是:
public YourPhonePage()
{
InitializeComponent();
Microsoft.Phone.Controls.PageOrientation currentOrientation = (App.Current.RootVisual as PhoneApplicationFrame).Orientation;
if (currentOrientation == PageOrientation.PortraitUp)
{
// Do something...
}
}