In WP7.1 ListBox scheint der ausgewählte Index nicht wie erwartet zu funktionieren. Wie kann ein ausgewähltes Element oben angezeigt werden?

8

SZENARIO:

  • In Windows Phone 7 verwende ich ein Listenfeld.
  • Angenommen, es gibt 200 Elemente.
  • Jetzt wähle ich 150. Element der Liste
  • Ich möchte, dass die Liste geladen wird und das 150ste Element am Anfang der Liste nach dem Laden ausgewählt (und angezeigt) wird.

PROBLEM:

  • Ich verwende den HookScrollViewer () wie auf dieser Seite erwähnt ( ListBox Offset in WP7 ) )
  • Wenn das Objekt das erste Mal geladen wird, zeigt die Liste nicht das richtige Element an (es wird das 148. Element angezeigt).
  • Ich verlasse die Seite und klicke erneut auf den Punkt 150
  • Jetzt ist der Listenindex korrekt und er zeigt 150. Punkt genau auf der Oberseite.

FRAGE:

  • Benütze ich die richtige Lösung?
  • Was ich falsch mache, ich habe versucht, die Lösung zu finden, ist aber gescheitert!

TIPP:

  • Wenn Sie ein Windows Phone haben, laden Sie bitte die App Ссылка herunter
  • Öffnen Sie ein beliebiges Kapitel und setzen Sie ein Lesezeichen (durch langes Drücken) in der Mitte des Kapitels.
  • Schließen Sie die Anwendung und öffnen Sie die Anwendung erneut.
  • Klicken Sie auf das Lesezeichen, um es zu öffnen.
  • Das erste Mal wird es nicht zum genauen Ort gehen.
  • Schließen Sie jetzt NICHT die App, drücken Sie einfach die Zurück-Taste und klicken Sie erneut auf das Lesezeichen.
  • Diesmal ist der Ort korrekt!
  • Die Frage ist, was ist los mit dem ersten Mal?

DER CODE DER LESESEITE:

  • Um es noch einfacher zu machen, können Sie den Code herunterladen: Ссылка

Vielen Dank!

    
Shahaab 12.10.2012, 12:14
quelle

2 Antworten

1

Nach dem Kämpfen habe ich das eigentliche Problem und seine Lösung gefunden.

Tatsächliches Problem:

  • Ich verwende externe Schriftarten, die nicht in der WP enthalten sind.
  • Die externen Schriften brauchen etwas Zeit, um in den Speicher geladen zu werden, und dann wird der Text angezeigt.
  • In der Zwischenzeit wird die Liste bereits geladen, während die Schrift geladen wird.
  • Abschließend wird der Text angezeigt, und (möglicherweise aufgrund der Erweiterung) wird der ausgewählte Indexstandort nach unten verschoben.
  • Ohne die App zu schließen, scheint die Schriftart im Speicher zu bleiben und das nächste Mal dauert es nicht lange und die Zeiger-ID wird korrekt angezeigt.

Meine Lösung:

  • Ich habe die (externen) Schriften geladen, während die Hauptseite geladen wird. Es dauert nur eine vernachlässigbare Zeit und beeinflusst daher nicht die Effizienz der App (in Bezug auf die Ladezeit)

Ich wünsche mir, dass jeder Architekt besser erklären kann, was passiert ist, oder mit anderen Worten, ich bin daran interessiert, den technischen Hintergrund des "tatsächlichen Problems" zu kennen.

Vielen Dank an alle, die Vorschläge gemacht haben.

    
Shahaab 19.10.2012, 13:21
quelle
0

Ich schätze, Ihre Daten werden nicht aktualisiert. Sie können versuchen, INotifyPropertyChanged zu verwenden. Sehen Sie sich das Beispiel an, in dem Sie die Verwendung von

verstehen     
junjie.chen 18.10.2012 09:44
quelle

Tags und Links