C# [WP7] Page Transitions funktionieren nicht richtig

Grantig

Captain
Registriert
Okt. 2008
Beiträge
3.552
Hi,

ich schreibe gerade an einer WP7 App, die auch super funktioniert.
Um die Übergänge noch ein wenig hübscher zu gestalten, habe ich den TransitionFrame/TransitionService aus dem Silverlight for WP7 Toolkit implementiert. (genauso wie im Link beschrieben)

Das ganze funktioniert soweit auch super, läuft flüssig und sieht gut aus.


Das Problem ist folgendes:
Sobald ich aus der App switche (per Windows Taste), oder den PhotoChooser Task aufrufe (über einen IconButton auf der ApplicationBar), funktionieren die Transitions auf meiner MainPage nichtmehr.
Für alle anderen Pages funktionieren die Transitions aber.

Ich komm einfach nicht drauf wo der Fehler liegen könnte, hab auch im Netz nichts dazu gefunden.
Meine MainPage besteht nur aus nem TextBlock, nem Panorama Control und der ApplicationBar.
Das PanoramaControl wird zur Laufzeit dynamisch mit PanoramaItems gefüllt.
Das einzige was die MainPage von den anderen unterscheidet ist, dass ich im LayoutRoot (<Grid.Resources>) 2 Storyboards definiert habe (FadeIn und FadeOut).
Ich wüsste aber nicht warum diese beiden Animationen die Page Transitions beeinflussen sollten und das auch nur dann, wenn die App vorher "schlafen gelegt" wurde.


Weiß evtl. jemand wo der Fehler liegen könnte, oder hatte schonmal jemand das selbe Problem?
 
Zuletzt bearbeitet:
Ich kann mir vorstellen, dass es daran liegt, dass du die App nicht ihren Zustand speichern lässt, wenn sie in den Hintergrund geschaltet wird.

Dieses Transistion ist ein Objekt, dass du zur Laufzeit erstellst, richtig? Das dürfte aus dem Speicher fliegen, wenn das Deactivated-Event gefeuert wird (= deine App in den Schlafzustand versetzt wird). Du musst es neu erstellen, wenn das Activated-Event auftritt.

Siehe auch hier: http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817008(v=vs.92).aspx


Das ist jedenfalls eine These von mir.
 
Die Transition hab ich als Style in Application.Resources definiert.
Diesen Style habe ich dann jeder Page zugewiesen:
Code:
Style="{StaticResource AnimatedPage}"

Selbst wenn ich im Activated-Event den Style erneut zuweise funktioniert der Effekt nicht.
Ich hab auch schon versucht die Transitions im Activated-Event komplett neu zu erstellen, bringt aber auch nix.
Bei den anderen Pages funktioniert alles problemlos weil die jedesmal neu erstellt werden.


Ich habe schon versucht App.Current.RootVisual im State Dictionary zu speichern, aber UIElement/TransitionFrame ist nicht serialisierbar.

Es muss wohl irgendwie mit dem TransitionFrame zusammenhängen, aber es kann doch nicht sein, dass einfach das RootVisual verworfen wird, oder?
Wenn doch, wie kann ich RootVisual zwischenspeichern wenn es nicht serialisierbar ist?
 
Überprüfe mal, ob der Style nach dem Activated-Event noch auf AnimatedPage gestellt ist (mit und ohne extra Zuweisung im Activated-Event). Und überprüfe, ob es immer noch dieselbe Page wie vor dem Deactivated-Event ist.
Du musst jetzt also prüfen, ob der Fehler an deiner App oder an den Transitions selber liegen. Irgendwo muss sich doch eine Spur finden lassen.


Ich überlege gerade, ob es sinnvoll ist, eine Page komplett zu serialisieren. Einige Eigenschaften reicht ja locker aus.
 
Der Style ist immer AnimatedPage, sowohl vor als auch nach dem Deactivated-Event, egal ob extra zugewiesen oder nicht. Die Transitions sind auf jeden Fall die ganze Zeit gesetzt, daran kanns nicht liegen.
Die Page ist auch die gleiche, der Konstruktor wird nur ein einziges Mal aufgerufen, auch meine initialized Variable steht noch auf true.

Alles so wie erwartet, außer das diese verdammten Transitions nicht funktionieren.
Kommt mir so vor als würden sie garnicht getriggert werden.
Die App/die Page sollte ja sowieso ohne mein Zutun wieder ordnungsgemäß wiederhergestellt werden, da sie wenn man nur kurz rausswitcht nicht "tombstoned" ist, sondern nur "schläft".

Die komplette Page zu serialisieren ist eher Blödsinn denke ich, war nur ein Versuch rauszufinden wo der Fehler liegt.

Hast du (oder jemand anders) die Transitions aus dem Toolkit schonmal verwendet?
Klappt das bei anderen problemlos?

Ich glaub ich werd morgen mal ein leeres Projekt nur mit 2 Pages + Transitions erstellen und schaun ob sich das auch so seltsam verhält.
 
Habe jetzt inzwischen ein neues Projekt angelegt und ausprobiert ob dort die Transitions funktionieren.
Ergebnis: Gleiches Problem.

Im Issue Tracker des WP7.1 Toolkit hat auch jemand das selbe Problem gepostet (ohne Antwort bis jetzt).
Allgemein scheinen da noch einige Bugs in den Toolkit COntrols zu sein.

Ich hab mir jetzt mal den Source runtergeladen und werde demnächst mal versuchen den Fehler zu finden, falls ich Zeit habe.
Da der Fehler aber nur rein optischer Natur ist und zudem nichtmal wirklich auffällt wenn man nicht drauf achtet, werd ich dieses Problem erstmal hinten anstellen.

Ich werd dann bescheid geben, falls ich finde worans liegt.
Falls irgendwer schon ne Lösung kennt, kann er sie natürlich gerne posten, dann spar ich mir die Arbeit ;)
Ergänzung ()

Falls es jemanden interessiert, ich hab das Problem gelöst.
Den Sourcecode zum Toolkit gibts hier: klick

Meine angepasste TransitionFrame.cs die das Problem mit den nicht mehr funktionierenden Transitions löst und noch 2 andere Fixes beinhaltet hab ich angehängt, falls jemand das selbe Problem hat. :)
 

Anhänge

Zuletzt bearbeitet:
Zurück
Oben