Spero che questo non sia un duplicato ma non riesco a trovare alcuna documentazione o esempi su come effettivamente utilizzare ScrollToVerticalOffset()
. Lo sto utilizzando in un'app di Windows Phone 8, ma penso che si applicherà ancora a WP7 e Silverlight (anche se, sentiti libero di correggermi se sbaglio).Come utilizzare ScrollViewer.ScrollToVerticalOffset?
ecco il mio set up di base (pseudo-codice dalla memoria):
<phone.PivotItem>
<ScrollViewer>
<Grid Height="1500">
<Grid.RowDefinitions>
<!-- about 20 rows, all auto-height -->
</Grid.RowDefinitions>
<Border Grid.Row="0">
<TextBox x:Name="txt1" />
</Border>
<Border Grid.Row="1">
<TextBox x:Name="txt2" />
</Border>
<!-- ...... -->
<Border Grid.Row="19">
<TextBox x:Name="txt20" />
</Border>
</Grid>
</ScrollViewer>
</phone.PivotItem>
Quindi, come potete vedere, ho un ScrollViewer
all'interno di un PivotItem
, e al suo interno è un Grid
. Nel Grid
ci sono circa 20 TextBox
s, ognuno all'interno di un Border
. Sto impostando dinamicamente l'attenzione su uno di questi TextBox
quando questa pagina viene caricata, quindi ogni volta che imposto lo stato attivo su TextBox
# 6-20 (approssimativamente) - Devo scorrere manualmente verso il basso per vederlo. Voglio scorrere automaticamente il mio ScrollViewer
in modo che, a prescindere dal fatto che lo TextBox
sia attivo, verrà centrato affinché l'utente possa vederlo.
Il documentation per ScrollToVerticalOffset()
dice:
Scorre il contenuto che si trova all'interno del ScrollViewer al posizione di offset verticale specificato.
E che accetta un tipo di System.Double
.
Quello che non capisco è A) il valore che dovrei passare, e B) come potrei ottenere quel valore? Dovrebbe essere un numero compreso tra 0 e l'altezza del mio Grid
(1500)? In tal caso, come è possibile determinare la posizione di ogni dato TextBox
in modo che possa scorrere fino ad esso?
Se ci sono degli esempi semplici, non esitate a collegarli. Non sono sicuro che il contenuto all'interno dello ScrollViewer
importi quando si chiama questo metodo, ma nel caso in cui lo desideri, voglio mostrare esattamente come lo sto usando.
Molte grazie in anticipo!
Piccola domanda, perché hai implementato questa configurazione? Qualche ragione per non usare il longlistselector?Mi stavo chiedendo :) – Depechie
Buona domanda - Suppongo che la ragione principale sia che non avevo familiarità con 'LongListSelector', e non ho fatto abbastanza ricerche per sapere se sarebbe stata un'opzione migliore o meno. Fondamentalmente, sto facendo una cosa tipo "top ten leaderboard" che mostrerà i primi dieci nomi e punteggi. Se un nuovo punteggio> supera il 10 ° punteggio, inserirò un 'TextBox' nella posizione corretta e l'utente lo salverà. Il mio pseudo-codice sopra ovviamente non riflette tutte queste funzionalità. – lhan
Quindi, nel mio scenario attuale, ci sono 10 diversi 'TextBlocks' che sto usando come etichette, e poi vengono modificati/spostati per la" nuova voce "e un' TextBox' è messo nella sua posizione per consentire all'utente di salvare il loro nome in quella posizione. – lhan