2016-04-29 21 views
0

ich das unten stehende Forum genannt habenScroll des ScrollToVerticalOffset Wert in ScrollViewer.VerticalOffset Eigenschaft nicht aktualisiert wird

https://social.msdn.microsoft.com/Forums/en-US/1885dcfa-af48-47ee-85d7-bb9809e24f38/scrollviewerscrolltoverticaloffset-not-working-in-windows-8?forum=winappswithcsharp

von ScrollViewer.UpdateLayout() -Methode aufgerufen wird, können wir die Position der Scroll in vertikal eingestellt. Ich kann sehen, dass der vertikale Offset-Wert in der Benutzeroberfläche mit/ohne ScrollViewer.UpdateLayout() geändert wurde. Aber wenn ich versuche, den Wert von ScrollViewer.VerticalOffset zu erhalten, der nicht geändert wird.

ScrollViewer.ScrollToVerticalOffset(1905); 

// ScrollViewer.UpdateLayout();

Gibt es noch eine andere Möglichkeit, diesen ScrollViewer.VerticalOffset zu aktualisieren?

Antwort

0

Die empfohlene Methode zum Einstellen des vertikalen/horizontalen Versatzes für ScrollViewer ist die Verwendung der Methode ChangeView(). Hier ist, wie es zu benutzen

scrollViewer.ChangeView(scrollViewer.HorizontalOffset, 500, scrollViewer.ZoomFactor); 

Sie können die geänderten VerticalOffset oder HorizontalOffset Eigenschaften in ViewChanged Veranstaltung. Z.B.

private void scrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
{ 
    double verticalOffset = scrollViewer.VerticalOffset; 
} 
+0

@Hassan Vielen Dank. – Smirti

+0

@Hassan eine weitere Abfrage. Ich habe den VerticalOffset-Wert durch Festlegen des obigen Codes überprüft und den tatsächlichen VerticalOffset-Wert von ScrollViewer mithilfe des ViewChanged-Ereignisses ermittelt, indem ich einen Haltepunkt in dieses Ereignis eingefügt habe. dann wird die Scrollleiste im Scrollviewer in der Benutzeroberfläche verschoben. Aber wenn ich ohne einen Haltepunkt überprüft habe, dann wird der vertikale Bildlaufleistenwert in der Benutzeroberfläche nicht geändert. Überprüfen Sie dies mit Task.Delay. das ist auch nicht hilfreich für mich. – Smirti

+0

In welchem ​​Teil Ihrer App ändern Sie 'VerticalOffset'? Stellen Sie sicher, dass die Benutzeroberfläche geladen wird, wenn Sie die ChangeView() 'Methode aufrufen. –