You can get a ListBox ScrollViewer and use its ScrollToVerticalOffset-method. To get a ScrollViewer, you can, for example, connect to the ListBox Loaded -event, as shown below:
XAML:
<ListBox Loaded="HookScrollViewer">
Code for:
private void HookScrollViewer(object sender, RoutedEventArgs e) { var element = (FrameworkElement)sender; var scrollViewer = ControlHelpers.FindChildOfType<ScrollViewer>(element); if (scrollViewer == null) return; this.myScrollViewer = scrollViewer; }
The ControlHerlpers.FindChildOfType method is implemented as follows:
public static T FindChildOfType<T>(DependencyObject root) where T : class { var queue = new Queue<DependencyObject>(); queue.Enqueue(root); while (queue.Count > 0) { var current = queue.Dequeue(); for (int i = VisualTreeHelper.GetChildrenCount(current) - 1; 0 <= i; i--) { var child = VisualTreeHelper.GetChild(current, i); var typedChild = child as T; if (typedChild != null) { return typedChild; } queue.Enqueue(child); } } return null; }
You now have a ListBox ScrollViewer in the myScrollViewer member, and you can directly access its methods. For example, to scroll the bottom, you can call:
this.myScrollViewer.ScrollToVerticalOffset(double.MaxValue);
Mikael koskinen
source share