2012-04-02 4 views
4

Ich habe keine Antwort darauf gefunden, nicht hier oder wenn ich danach gegoogelt habe.Silverlight - Das erste Mal, wenn Sie zum Vollbild gehen, wird im Hintergrund geöffnet (FF, Chrome, nicht IE)

Der Fall ist, dass wir ein Silverlight mit einem Video-Stream haben. Wenn wir Fullscreen mit dem Code aktiviert haben: Application.Current.Host.Content.IsFullScreen wird die Anwendung zum ersten Mal im Vollbildmodus geöffnet, im Hintergrund (und für den Kunden scheint es, als würde nichts passieren).

Es scheint, dass es sich an das nächste Mal erinnern wird.

Die Alternative für uns ist es nicht zu ermöglichen, dies zu deaktivieren, so dass, wenn das Fenster den Fokus verliert, es aus dem Vollbildmodus entfernt wird.

Gibt es eine Möglichkeit, um dies zu umgehen, wie wir beide im Vollbild oben auf dem Bildschirm (nicht versteckt) öffnen möchten, und haben die Möglichkeit, es dort festgesteckt. (Da viele unserer Benutzer möchten es auf einem anderen Monitor haben und den Computer zur gleichen Zeit verwenden)

Ich habe darüber nachgedacht, es im Anwendungsspeicher zu speichern, wie es scheint, erinnert sich das erste Mal ein Benutzer es zu bewegen vor. Aber weiß nicht, wie das geht, und scheint auch ein bisschen hackish.

In IE funktioniert das, aber natürlich ist das nicht gut genug.

+1

Warum nicht als Out-of-Browser-Anwendung ausgeführt werden? Funktioniert wie Charme für mich. Stellen Sie sicher, dass Sie die "Require erhöhte Vertrauensstellung" aktivieren, wenn Sie außerhalb des Browsers ausgeführt werden – Dudemeister

+0

Probieren Sie es aus. Ein Grund, warum ich mir vorstellen kann, ist, dass diese Funktion das einzige ist, was ich benötige, um es zum Laufen zu bringen, also mehr hinzufügen als nötig. Nicht sicher, was genau der Unterschied für die Benutzererfahrung mit Out-of-Browser-Anwendungen ist. Wenn es fast dasselbe ist, dann denke ich, dass es ein gültiges Argument dafür sein wird, aber ich möchte das Problem immer noch beheben, anstatt es zu vermeiden. – Nitro

+0

@Dudemeister warum das erhöhte Vertrauen? Es sollte für dieses Szenario nicht erforderlich sein. – jv42

Antwort

2

Ihre Anwendung Aufenthalt haben Vollbild auch wenn sie nicht konzentriert, haben Sie die folgenden zu Ihrer Anwendung hinzuzufügen: eine Eingabeaufforderung für die Erlaubnis

Host.Content.FullScreenOptions = System.Windows.Interop.FullScreenOptions.StaysFullScreenWhenUnfocused; 

Dies wird erzeugt, wenn Sie den Vollbildmodus zu wechseln, ähnlich wie IsolatedStorage Kontingentaufforderungen.

Für die App, die im Hintergrund zeigt, habe ich nur das mit Safari auf MacOS erlebt, ich hatte dieses Problem nie unter Windows IE, FF oder Chrome. Vielleicht hilft die obige Zeile jedoch.

+0

Dies löst den ersten Teil, damit es fokussiert bleibt. Aber unglücklicherweise ist es der zweite Teil, der mich am meisten belastet. Und das ist der Grund, warum wir wählen müssen zwischen dem Fokus verlieren (was die kleinere Benutzergruppe ist) und denen, bei denen der Vollbildschirm in den Hintergrund tritt. Problem tritt sowohl in FF, Chrome, Safari unter MacOS auf. Ich denke, die Lösung für meinen Teil wäre, eine Umschalttaste einzubeziehen, mit der sich die Benutzer entscheiden können. – Nitro

+0

Vielleicht habe ich die Struktur Ihrer App falsch verstanden. Haben Sie ein einzelnes Fenster mit Ihren Inhalten, einschließlich Video, oder haben Sie ein ChildWindow oder etwas ähnliches? – jv42

+0

Ich habe ein einzelnes Silverlight-Fenster mit nur dem SMF-basierten Player. Ich habe auch das gleiche Problem mit anderen Streaming-Lösung erlebt. Mit dem Problem, dass das Fenster im Hintergrund erscheint. (Was in unserem Fall mehr Benutzer verwirren würde als den Vorteil, es auf diese Weise zu haben) Wird versuchen, eine Version hochzuladen, damit sie in Aktion gesehen werden kann. – Nitro