2012-10-31 13 views
18

Okay, also weiß jeder, wie man die Scroll-Position eines ScrollViewers einstellt. Ganze Essays und Blogeinträge wurden über ScrollViewer.ScrollToVerticalOffset() geschrieben, und es gibt ein paar hundert Fragen mit Antworten dazu hier.C#/WPF - ScrollViewer Scroll-Position abrufen?

Also, ich eingeben:

myScrollViewer.ScrollToVerticalOffset(280); 

... und es ist so freundlich scrollt zu diesem Ort.

Die Frage ist, welche Eigenschaft enthält jetzt 280, so kann ich es später abrufen?

(Hinweis: myScrollViewer.VerticalOffset und ContentVerticalOffset beide 0; myScrollViewer.ScrollInfo einfach nur existiert nicht.)

EDIT: Anscheinend muss ich eine detailliertere Demonstration.

private void btnTest_Click(object sender, RoutedEventArgs e) { 
    double scrollTarget = 280; 
    MessageBox.Show("Target: " + scrollTarget.ToString()); 
    myScrollViewer.ScrollToVerticalOffset(scrollTarget); 
    MessageBox.Show("Now: " + myScrollViewer.VerticalOffset); 
} 

Ich muss wiederholen, dass diese nicht bewegen, wie beabsichtigt. Geht genau dahin, wo ich es haben will. myScrollViewer.VerticalOffset ist jedoch auf 0 gesetzt.

+0

Lesen MSDN, 'VerticalOffset' oder' ContentVerticalOffset' sollte Ihnen den richtigen Wert geben ... an welchem ​​Punkt greifen Sie auf diese Eigenschaften (wenn sie auf 0 auswerten)? –

Antwort

23

Die Lösung ist, myScrollViewer.UpdateLayout() nach myScrollViewer.ScrollToVerticalOffset() manuell aufzurufen. Dann wird myScrollViewer.VerticalOffset den erwarteten Wert haben.

4

Vergewissern Sie sich, dass VerticalScrollBarVisibility = "Visible" und VerticalScrollOffset 280 sind, nachdem das LayoutUpdated-Ereignis ausgelöst wurde.

0

Ich denke, dass Sie den myscrollViewer im Konstruktor des Fensters aufrufen.

Sie können sie aufrufen, wenn Sie auf eine Schaltfläche oder in eine geladene Methode für das Fenster klicken, damit der Wert in vertikalen Offsetwerten aktualisiert wird. Das heißt, dieser Wert wird aktualisiert, nachdem Sie Ihr Fenster initialisiert haben!

Verwandte Themen