Wiederherstellen der genauen Bildlaufposition einer Listbox in Windows Phone 7

8

Ich arbeite daran, eine App so zu gestalten, dass sie von Grabsteinen verschwindet. Die App enthält große Listboxen, so dass ich im Idealfall dorthin zurückrollen möchte, wo sich der Benutzer gerade befand, während er um diese Listboxen scrollte.

Es ist ganz einfach, zu einem bestimmten SelectedItem zurückzuspringen - leider benötigt meine App den Benutzer nie, um ein Objekt auszuwählen, sondern scrollt einfach durch sie. Was ich wirklich will, ist eine Art von MyListbox.ScrollPositionY, aber es scheint nicht zu existieren.

Irgendwelche Ideen?

Chris

    
Chris Rae 17.12.2010, 23:04
quelle

1 Antwort

10

Sie müssen das ScrollViewer , das von ListBox verwendet wird, intern abrufen, damit Sie den Wert der VerticalOffset -Eigenschaft abrufen und anschließend die SetVerticalOffset -Methode aufrufen können.

Dies erfordert, dass Sie von der ListBox über die Visual-Struktur, die seine Interna bildet, herunterkommen.

Ich benutze diese praktische Erweiterungsklasse, die Sie zu Ihrem Projekt hinzufügen sollten (ich muss dies in einem Blog veröffentlichen, weil ich es immer wieder wiederhole): -

%Vor%

Wenn dies verfügbar ist, erhält %%_C_% (und alle anderen UIElements für diese Angelegenheit) ein paar neue Erweiterungsmethoden ListBox und Descendents . Wir können diese mit Linq kombinieren, um nach Dingen zu suchen. In diesem Fall könnten Sie verwenden: -

%Vor%     
AnthonyWJones 18.12.2010, 19:08
quelle