Ich hoffe, das ist kein Duplikat, aber ich kann keine Dokumentation oder Beispiele finden, wie man tatsächlich verwendenScrollToVerticalOffset()
. Ich benutze es in einer Windows Phone 8 App, aber ich denke es wird immer noch auf WP7 und Silverlight angewendet (obwohl, fühlen Sie sich frei, mich zu korrigieren, wenn ich falsch liege).Wie ScrollViewer.ScrollToVerticalOffset verwenden?
So, hier ist meine grundlegenden Einrichtung (Pseudo-Code aus dem Gedächtnis):
<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>
So wie Sie sehen können, habe ich eine ScrollViewer
innerhalb eines PivotItem
haben, und im Inneren ist eine Grid
. In der Grid
gibt es etwa 20 TextBox
s, jeweils innerhalb einer Border
. Ich setze den Fokus dynamisch auf einen dieser TextBox
s, wenn diese Seite geladen wird, also stelle ich den Fokus immer auf TextBox
# 6-20 (ungefähr) - ich muss manuell nach unten scrollen, um ihn zu sehen. Ich möchte meine ScrollViewer
automatisch scrollen, so dass, egal welcher TextBox
Fokus hat, es für den Benutzer zentriert sein wird zu sehen.
Die documentation für ScrollToVerticalOffset()
sagt:
Scrolls der Inhalt, der auf die angegebene vertikal versetzter Position innerhalb des Scroll ist.
Und dass es eine Art von System.Double
akzeptiert.
Was ich nicht verstehe, ist A) der Wert, den ich weitergeben soll, und B) wie ich diesen Wert überhaupt bekommen könnte? Soll es eine Zahl zwischen 0 und der Höhe meines Grid
(1500) sein? Wenn ja, wie könnte ich die Position eines gegebenen TextBox
bestimmen, damit ich zu ihm blättern kann?
Wenn es irgendwelche einfachen Beispiele gibt, wenden Sie sich bitte an sie. Ich bin mir nicht sicher, ob der Inhalt der ScrollViewer
beim Aufruf dieser Methode eine Rolle spielt, aber für den Fall, dass es funktioniert, wollte ich genau zeigen, wie ich es benutze.
Vielen Dank im Voraus!
Kleine Frage, warum haben Sie dieses Setup implementiert? Gibt es einen Grund, warum Sie den Longlist-Selector nicht verwenden sollten?Ich habe mich gefragt :) – Depechie
Gute Frage - Ich nehme an, der Hauptgrund ist, dass ich 'LongListSelector' nicht kannte, und ich habe nicht genug Forschung getan, um zu wissen, ob es eine bessere Option wäre oder nicht. Im Grunde mache ich eine "Top-Ten-Leaderboard" -Typ-Sache, die die Top-Ten-Namen und Scores anzeigen wird. Wenn eine neue Punktzahl> als die 10. Punktzahl ist, füge ich eine 'TextBox' in die richtige Position ein und lasse sie vom Benutzer speichern. Der obige Pseudo-Code spiegelt jedoch offensichtlich nicht alle diese Funktionen wider. – lhan
Also in meinem tatsächlichen Szenario gibt es 10 verschiedene 'TextBlocks', die ich als Bezeichnungen verwende, und dann werden sie für den" neuen Eintrag "angepasst/verschoben und eine' TextBox' wird an ihren Platz gesetzt, um den Benutzer speichern zu lassen ihr Name in diese Position. – lhan