我想确定WP7应用程序中设备的当前方向。我不想处理OrientationChange事件,因为当打开页面时我需要当前方向。确定当前方向
我一直在试图与这一段代码我在一个论坛上发现这样做:
((PhoneApplicationFrame)Application.Current.RootVisual).Orientation
然而,这总是PortraitUp返回,即使我侧身开启设备。顺便说一句,我正在试图用模拟器来做到这一点,所以它可能是一个模拟器bug。
谢谢
我想确定WP7应用程序中设备的当前方向。我不想处理OrientationChange事件,因为当打开页面时我需要当前方向。确定当前方向
我一直在试图与这一段代码我在一个论坛上发现这样做:
((PhoneApplicationFrame)Application.Current.RootVisual).Orientation
然而,这总是PortraitUp返回,即使我侧身开启设备。顺便说一句,我正在试图用模拟器来做到这一点,所以它可能是一个模拟器bug。
谢谢
我发现了这个: ((PhoneApplicationFrame)Application.Current.RootVisual).Orientation
在PageLoaded中没有正确的方向。
它不会在第一个LayoutUpdated事件中返回正确的方向。然而,还有第二个LayoutUpdated事件,它提供了正确的一个。 而在两个LayoutUpdated事件之间,如果最后一页处于另一个方向,那么还会有一个OrientationChanged事件。
因此,我没有其他解决方案,然后等待OrientationChanged事件发生(因为用户可以从这个页面支持的唯一页面只支持肖像模式)。
您的应用程序必须支持横向方向才能接收它。如果您只支持肖像,那么您在提供的媒体资源中永远不会获取OrientationChanged事件和横向方向。
SupportedOrientations =“PortraitOrLandscape”在我的页面中设置,如果这就是你的意思。 – 2011-12-20 15:39:32
刚刚在模拟器和我的设备上进行了测试。在模拟器中,它就像是马克提到它总是返回PotraitUp。
但是,如果我在我的设备上测试它比直接返回正确的方向。所以可能是因为马克认为这是一个模拟器错误。
很高兴听到,我将在明天测试设备,并告诉您是否有任何成功。谢谢 – 2011-12-20 15:58:36
奇怪,但我的设备具有与仿真器相同的行为。只要写测试程序显示在不同事件的方向(横向模式下启动): LayoutUpdated:PortraitUp, 加载:PortraitUp, LayoutUpdated:LandscapeLeft, OrientationChanged:LandscapeLeft, LayoutUpdated:LandscapeLeft – Ku6opr 2011-12-20 16:01:54
这为我工作..它的工作完美..希望这可以帮助别人..
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
}
}
很好看'Orientation'财产。帮助我很多手动调用'OrientationChanged'事件。 – Mangesh 2015-05-22 06:11:52
解决的办法是:
public YourPhonePage()
{
InitializeComponent();
Microsoft.Phone.Controls.PageOrientation currentOrientation = (App.Current.RootVisual as PhoneApplicationFrame).Orientation;
if (currentOrientation == PageOrientation.PortraitUp)
{
// Do something...
}
}
你在模拟器中使用键盘? http://msdn.microsoft.com/en-us/library/ff402568(v=vs.92).aspx – ChristiaanV 2011-12-20 15:32:59
不,我发现已经过了一个小时的headbanging,因为OrientationChanged事件甚至没有触发。现在起作用了,事件论证会回馈正确的方向。但是,我想知道PageLoad中的方向。 – 2011-12-20 15:38:36
标记,您只能在首次LayoutUpdated事件后调用Orientation属性。在页面加载事件中,它始终是PortraitUp,因为在它之后引发了OrientationChanged事件。 – Ku6opr 2011-12-20 15:52:22