2011-01-16 6 views
0

Ich versuche, meine Windows Phone 7 Seite Ladezeiten zu beschleunigen. Ich habe eine "statische" Seite, die dynamisch in einem Panorama-Steuerelement erstellt wurde - statisch, was bedeutet, dass sich der Inhalt niemals ändert.Windows Phone 7 Control Caching - 'Element ist bereits das Kind eines anderen Elements'

Beim ersten Laden schaue ich mir meine Konfigurationsdatei an, erstelle die einzelnen PanoramaItem-Steuerelemente und füge sie dem Panorama-Hauptsteuerelement hinzu. Ich versuche, eine Liste an einem statischen Ort zu halten, so dass die ursprüngliche Erstellung nur einmal stattfinden würde und ich einfach eine vollständig gerenderte Version zu meinem Panorama-Steuerelement hinzufügen könnte, wenn die Seite gerendert wurde.

Funktioniert beim ersten Laden, aber wenn ich versuche, die zwischengespeicherten PanoramaItems zum Panorama-Steuerelement hinzufügen, bekomme ich die Nachricht "Element ist bereits das Kind eines anderen Elements". Das macht Sinn, da ich schon vorher hinzugefügt habe. Aber ich kann eine Möglichkeit sehen, die PanoramaItems mit dem ersten Panorama-Steuerelement zu trennen ...

Ich könnte über die Kontrolle Caching-Sache auch alles falsch gehen ... Lassen Sie mich wissen, wenn es eine andere Möglichkeit ist, dies zu tun.

Antwort

0

Sie können auf dem Drücken dieser Taste

PanoramaItem pi; 
bool blahShown = false; 

mit den folgenden Seitenfelder

Als Beispiel Panorama.Items.Remove (PivotItem) für diese

verwenden, ist die Steuerung zuerst instanziiert und angezeigt und bei nachfolgenden Drücken entfernt und ohne Instanziierung neu ausgegeben.

private void button1_Click(object sender, RoutedEventArgs e) 
{ 

    if (pi == null) { 
     pi = new PanoramaItem(); 
     pi.Header = "blah"; 
    } 

    if (blahShown) { 
     Pano.Items.Remove(pi); 
     blahShown = false; 
    } else { 
     Pano.Items.Add(pi); 
     blahShown = true; 
    } 


} 
+0

Arbeitete ein Vergnügen. – will