18

How do I programatically get the screen resolution on WP7? Here are a bunch of links that get the same job done in desktop WPF and Silverlight, but none of them are in the Phone SDK.

Any ideas?

http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/f0639904-a368-44db-9ddd-efcaf8fc736e
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6b6b832f-0dfd-428c-84cd-b1b9e7f236cf
How can I get the active screen dimensions?
http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/f0639904-a368-44db-9ddd-efcaf8fc736e

4

5 回答 5

66

我用这个:

this.ScreenWidth = System.Windows.Application.Current.Host.Content.ActualWidth;
this.ScreenHeight = System.Windows.Application.Current.Host.Content.ActualHeight;

为应用程序换肤的多种方法。如果它用于 XAML,则可以绑定到 LayoutRoot 的属性。

Height="{Binding ElementName=LayoutRoot,Path=ActualHeight}"
于 2010-12-08T15:51:00.933 回答
14

It looks like Application.Current.RootVisual.RenderSize will give you that information.

于 2010-04-08T12:23:06.200 回答
8

我还不能拒绝/赞成(实际上,现在我可以并且我这样做了),但我想指出“Luke Puplett”的答案包括 Application.Current.Host.Content 是正确的,而不是“Andréas Saudemont ”s 建议 RenderSize。

我将使用 MSDN 中的教程或示例应用程序中常用的名称。

我说 Host.Current 更合适,因为在应用程序的最开始,尤其是在 WP7 上(我不知道它在 PC 上的“常规”SL3/SL4 上如何)——例如,在第一个页面的构造函数 - RenderSize 属性尚未正确设置,因为正在构造应用程序的“RootVisual”并且尚未在“App.xaml.cs”中分配。至少在那一点上,RenderSize=Size{0,0}

另一方面,如果只有 App 正确启动,Host.Content 会设置为某个 phoneframe,即正确的全屏尺寸并旋转到实际屏幕位置。我猜一开始就是启动启动画面(JPG文件中的空或静态)

于 2011-04-20T19:01:26.003 回答
4

如果您想从 XNA 游戏中访问显示尺寸,请使用以下命令:

graphics.GraphicsDevice.DisplayMode.Width

graphics.GraphicsDevice.DisplayMode.Height

其中 graphics 是当前游戏的 GraphicDeviceManager !

于 2012-01-20T02:14:14.283 回答
1

整个画面:

(App.Current.RootVisual as FrameworkElement).ActualHeight
(App.Current.RootVisual as FrameworkElement).ActualWidth

当前页面:

如果您想知道可见大小(考虑 AppBar / SystemTray),那么只需在页面之外询问即可。

于 2010-04-10T00:50:19.520 回答