2010-04-08 13 views
18

Wie bekomme ich programmatisch die Bildschirmauflösung auf WP7? Hier sind ein paar Links, die die gleiche Arbeit in Desktop-WPF und Silverlight erledigen, aber keine von ihnen sind im Phone SDK.Wie erhalten Sie die Bildschirmgröße für Windows Phone 7 Series?

Irgendwelche Ideen?

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

Sie haben eines dieser Telefone? Wow - ich wusste nicht, dass sie für jeden verfügbar sind, der sich mit ihnen entwickeln könnte. –

+0

Nein, nur der Emulator :( –

Antwort

14

Es ist wie Application.Current.RootVisual.RenderSize aussieht wird Ihnen diese Informationen geben.

+0

Das funktioniert sicherlich, danke. –

+0

Handlich zu wissen, obwohl es zwei Auflösungen für Windows Phone 7 (480 × 800) und (320 × 480) gibt, haben sie nicht ganz das gleiche Seitenverhältnis, was ich vermute, ist der Grund für die Frage. – RoguePlanetoid

+7

Bitte beachten Sie die Antwort von Luke Puplett, wenn Sie dies versuchen. RootVisual.RenderSize gibt Ihnen wahrscheinlich nicht genau, was Sie wollen. – jeffa00

1

Ganzer Bildschirm:

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

Aktuelle Seite:

Wenn Sie die sichtbare Größe wissen wollen (unter AppBar/SystemTray berücksichtigt), dann fragen Sie einfach für sie die Seite stattdessen ab.

66

Ich benutze diese:

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

Viele Möglichkeiten, um eine App häuten. Wenn es für XAML ist, könnten Sie an die Eigenschaften von LayoutRoot binden.

Height="{Binding ElementName=LayoutRoot,Path=ActualHeight}" 
+2

Dies ist die bessere Antwort. Wie Quetzlcoatl darauf hingewiesen hat, hat die angenommene Antwort Probleme. – jeffa00

+0

Diese Antwort ist besser. Mit dieser Methode können Sie auch die Bildschirmdimensionen im Konstruktor abrufen. Mit der akzeptierten Antwort bekam ich eine Null-Referenz-Ausnahme. – Daan

+0

Und es funktioniert auch auf WP8. – KristianB

8

kann ich nicht nach unten/upvote noch (eigentlich jetzt ich kann, und ich habe so), aber ich möchte darauf hinweisen, dass „Luke Puplett“ s Antwort einschließlich Application.Current.Host .Content ist der richtige, nicht "Andréas Saudemont", der RenderSize empfiehlt.

Ich verwende Namen, die häufig in Lernprogrammen oder Beispielanwendungen von MSDN verwendet werden.

Ich sage, dass Host.Current angemessener ist, weil auf den sehr Anfang der Anwendung, vor allem auf der WP7 (ich weiß nicht, wie es auf "regulären" SL3/SL4 auf PC ist) - das heißt für Beispiel, im Konstruktor der allerersten Seite - die RenderSize-Eigenschaft ist noch nicht richtig gesetzt, da die "RootVisual" der Anwendung erstellt wird und noch nicht in der "App.xaml.cs" zugewiesen wurde. Zumindest in diesem einen Punkt, die RenderSize = Größe {0,0}

Auf der anderen Seite, wenn nur die App korrekt gestartet wird, ist der Host.Content auf ein Telefon-Frame, das korrekt Vollbild-Größe ist und auf die tatsächliche Bildschirmposition gedreht. Ich würde vermuten, dass am Anfang ist es der Startbegrüßungsbildschirm (leer oder statisch von JPG-Datei)

4

Wenn Sie die Anzeigegröße aus einem XNA Game zugreifen möchten, verwenden Sie diese:

graphics.GraphicsDevice.DisplayMode.Width 

und

graphics.GraphicsDevice.DisplayMode.Height 

wo Grafiken GraphicDeviceManager ist das aktuelle Spiel ist!