2011-05-25 12 views
3

我正在使用Windows 7平板电脑上的Silverlight 4浏览器(OOB)应用程序。大多数情况下,该程序处于全屏模式。但是,如果用户旋转平板电脑,应用程序会旋转并保持全屏显示,但会缩放为前一个屏幕方向。将应用程序全屏显示并将其放回全屏后,所有内容都可以正确显示。屏幕旋转时有什么方法可以检测到吗?到目前为止,我已经尝试了应用程序的Resize,LayoutChanged和FullScreenChanged事件,并为主页的SizeChanged事件提供了一个处理程序。当应用程序在全屏模式下旋转时,这些都不会被触发。如何在全屏Silverlight应用程序中检测平板电脑屏幕旋转?

根据约什爱因斯坦的建议,我试着在定时器上轮询应用程序的ActualWidth/Height。它看起来像旋转之后,从Silverlight插件返回的ActualWidth/Height值是预先旋转的值。只有将其全屏显示并全屏显示才会改变插件的分辨率。由于我是OOB,HtmlPage.Eval黑客无法使用。

Silverlight的WP7版本具有OnOrientationChanged事件,该事件似乎在桌面版本中不可用。有人有主意吗?

回答

1

伟大的问题,但据我所知,似乎并不可能。我尝试在虚拟机中更改屏幕分辨率(方向更改实际上只是屏幕分辨率更改导致宽度大于高度,反之亦然),并且无法触发任何布局事件。

这个问题似乎是Silverlight插件本身没有调整大小。通过提供浏览器外的应用程序,您可能会使用COM与WMI进行互操作来获得实际的屏幕分辨率,但这有点不合理。如果它是浏览器内的应用程序,则可以使用HTML DOM。在这两种情况下,您都可能需要轮询当前屏幕分辨率,而不是通过事件通知。

Mister Goodcat已经写了一篇关于如何在这两种情况下获取这些信息的博客文章。

我也将它作为Silverlight错误进行存档。

+0

谢谢,这给了希望的短暂时刻。不幸的是,它看起来像一个屏幕旋转后,Silverlight插件无法正确报告ActialWidth/Height。看到我更新的问题了解更多详情。 – bsruth 2011-05-26 16:47:05

+0

我知道,在我的回答中我注意到,旋转之后,Silverlight插件没有调整大小。 ActualHeight和ActualWidth不会给你正确的值。您需要查看WMI或HTML DOM以获取需要提升浏览器外浏览量或浏览器内应用程序的值。 – Josh 2011-05-27 19:43:49

+0

调整大小似乎很熟悉。我大部分时间都在你关联的帖子上,只是忘了你原来的帖子。对于那个很抱歉。 – bsruth 2011-05-31 20:51:54

相关问题