2010-04-08 1 views
18

Как программно получить разрешение экрана на WP7? Вот куча ссылок, которые выполняют ту же работу, что и на рабочем столе WPF и Silverlight, но ни один из них не находится в SDK телефона.Как получить размер экрана на Windows Phone 7 Series?

Любые идеи?

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

+0

У вас есть один из этих телефонов? Вау - я не знал, что они доступны для тех, кто развивается вместе с ними. –

+0

Нет, просто эмулятор :( –

ответ

14

Это выглядит как Application.Current.RootVisual.RenderSize даст вам эту информацию.

+0

Это, безусловно, работает, спасибо. –

+0

Удобно знать, что даже если будут два разрешения для Windows Phone 7 (480 × 800) и (320 × 480), они не имеют одинакового соотношения сторон, что, я думаю, является причиной вопрос. – RoguePlanetoid

+7

См. Ниже ответ Луке Пуллетта, если вы пытаетесь это сделать. RootVisual.RenderSize вряд ли даст вам именно то, что вы хотите. – jeffa00

1

Весь экран:

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

Текущая страница:

Если вы хотите знать, видимый размер (принимая AppBar/SystemTray во внимание), то просто попросите его покинуть страницу вместо этого.

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}" 
+2

Это лучший ответ. Как отметил Кетцкоатль, принятый ответ имеет проблемы. – jeffa00

+0

Этот ответ лучше. Используя этот метод, вы также можете получить размеры экрана в конструкторе. Используя принятый ответ, я получил исключение для NULL-ссылки. – Daan

+0

И он также работает на WP8. – KristianB

8

Я не могу вниз/upvote еще (на самом деле, теперь я могу, и я так и сделал), но я хотел бы отметить, что ответ «Luke Puplett» S включая Application.Current.Host .Контент правильный, а не «Андреас Саудмонт», который советует RenderSize.

Я буду использовать имена, которые обычно используются в учебниках или примерах приложений из MSDN.

Я говорю, что Host.Current более адекватен, потому что в самом начале приложения, особенно на WP7 (я не знаю, как он находится на «обычном» SL3/SL4 на ПК), то есть для например, в конструкторе самой первой страницы - свойство RenderSize не верно установлено, так как «RootVisual» приложения создается и еще не назначено в «App.xaml.cs». По крайней мере, в этом пункте RenderSize = Size {0,0}

С другой стороны, если только приложение запускается правильно, для параметра Host.Content задан какой-то фреймворк, то есть правильно полноэкранный размер и поворачивается до фактического положения экрана. Я предполагаю, что в самом начале это начальный экран-заставка (пустой или статическими из JPG-файла)

4

Если вы хотите получить доступ размер дисплея в пределах от XNA Game, используйте:

graphics.GraphicsDevice.DisplayMode.Width 

и

graphics.GraphicsDevice.DisplayMode.Height 

где графика является текущей игры GraphicDeviceManager!

Смежные вопросы