2012-04-04 6 views
1

Ich bin ein Hintergrundbild auf meinem XAML Grid mit einem Uri setzen. Der Uri verweist auf eine HTTP-URL, von der er abgerufen wird, und rendert das Bild dann als Hintergrund für eine Win8-Metro-App.XAML-Ereignis für Hintergrundbild aus dem Bildschirm gerendert

Ich habe versucht herauszufinden, ob es ein Ereignis oder etwas gibt, in das ich mich einklinken kann, um mich wissen zu lassen, dass WPF es in den Speicher geladen hat, UND das Rendern aus der Sicht beendet hat.

Momentan wird ein kleines Bild schnell genug geladen und sanft eingeblendet. Wenn ich jedoch ein größeres, langsameres Bild lade, dauert es 100 ms, bis es als Hintergrund erscheint, was bedeutet, dass es entweder in der Mitte erscheint -Fade oder nachdem der Fade-Effekt abgeschlossen wurde. Das sieht ziemlich schlecht aus.

Das Ziel ist es, einen Überblendungsübergang zwischen den App-Seiten (ich habe dies bereits), ohne die Inkonsistenz des Hintergrundbilds, wann immer es getan wird.

Alle Vorschläge wären willkommen.

+0

Ist es WPF oder XAML/WinRT (aka Metro)? Nicht das gleiche. – jv42

+0

Entschuldigung, es ist XAML/WinRT. –

Antwort

3

Sie sagen nicht genau, wie Sie das Bild laden, aber es gibt ein DownloadCompleted-Ereignis auf BitmapImage, z.

BitmapImage bmp = new BitmapImage(imageUri); 
bmp.DownloadCompleted += ReadyToDisplay; 
0

wie Phil sagte, aber dann für Windows Store Apps:

BitmapImage bmp = new BitmapImage(imageUri); 
bmp.ImageOpened += ReadyToDisplay; 

ImageOpened Tritt ein, wenn die Bildquelle heruntergeladen und dekodiert ohne Ausfall. Sie können dieses Ereignis verwenden, um die Größe eines Bildes vor dem Rendern zu bestimmen.

Quelle: MSDN

Verwandte Themen