2012-10-12 9 views
8

SCENARIO:In WP7.1 l'indice selezionato di ListBox non sembra funzionare come previsto. Come può essere visualizzato un elemento selezionato in cima?

  • in Windows Phone 7, sto usando una casella di riepilogo.
  • Supponiamo che ci siano 200 articoli.
  • Ora seleziono il 150 ° elemento dell'elenco
  • Desidero che l'elenco carichi e selezioni (e mostri) il 150 ° elemento in cima all'elenco dopo il caricamento.

PROBLEMA:

  • Sto usando il HookScrollViewer() come accennato in questa pagina (ListBox offset in WP7)
  • La prima volta che l'oggetto viene caricato l'elenco non mostra l'elemento giusto (per esempio mostra 148 ° elemento).
  • Esco da quella pagina e faccio nuovamente clic sulla voce 150.
  • Ora l'indice della lista è corretto e mostra 150esimo elemento esattamente in alto.

DOMANDA:

  • Am I utilizzando la soluzione giusta?
  • Cosa c'è di sbagliato sto facendo, ho cercato di identificare la soluzione, ma non è riuscito!

SUGGERIMENTO:

  • Se si dispone di un Windows Phone, si prega di scaricare l'applicazione: http://tinyurl.com/9298cdx
  • Aprire qualsiasi capitolo e segnalibro qualcosa (premendo a lungo) al centro del capitolo.
  • Chiudere l'applicazione e riaprire l'applicazione.
  • Fare clic sul segnalibro per aprirlo.
  • La prima volta non si troverà nella posizione esatta.
  • Ora NON chiudere l'app, basta premere il pulsante indietro e fare nuovamente clic sul segnalibro.
  • Questa volta la posizione è corretta!
  • La domanda è: cosa c'è che non va la prima volta?

IL CODICE DELLA PAGINA DI LETTURA:

Grazie mille!

+0

Ho controllato XAML e non c'è niente di sbagliato lì. Ho rimosso l'animazione, non ha funzionato neanche. – Shahaab

+0

Ho aggiunto 'UpdateLayout()' sia per ScrollViewer che per ListBox, non ha aiutato. – Shahaab

+0

Il punto è che funziona bene, la seconda volta funziona come dovrebbe, perché non funziona la prima volta? C'è qualcosa che mi manca? – Shahaab

risposta

1

Dopo aver lottato, ho trovato il vero problema e la sua soluzione.

problema reale:

  • Sto usando font esterni, diversi da quelli che sono inclusi nel programma di lavoro di default.
  • I caratteri esterni richiedono un po 'di tempo per essere caricati nella memoria e quindi viene visualizzato il testo.
  • Nel frattempo la lista è già caricata, mentre il carattere è in fase di caricamento.
  • Infine, il testo viene visualizzato e (a causa dell'espansione), la posizione dell'indice selezionata viene spostata verso il basso.
  • Senza chiudere l'app, il carattere sembra rimanere in memoria e la volta successiva non ci vuole molto tempo e l'id del puntatore viene visualizzato correttamente.

mia soluzione:

  • ho caricato i font (esterni), mentre la pagina principale viene caricata. Ci vuole una quantità trascurabile di tempo e quindi, non influenza l'efficienza dell'app (in termini di tempo di caricamento)

Mi piacerebbe se qualche architetto potesse spiegare in modo migliore ciò che stava accadendo, o in altri parole, sono interessato a conoscere il background tecnico del "problema reale".

Grazie mille a tutti coloro che hanno dato suggerimenti.

0

immagino i tuoi dati non aggiornare .È possibile provare ad usare INotifyPropertyChanged, Guardate l'esempio si capisce come utilizzare

Problemi correlati