private static void ElementLoaded(object sender, RoutedEventArgs e) { FrameworkElement element = sender as FrameworkElement; element.Loaded -= ElementLoaded; ScrollViewer scrollViewer = element.FindChildOfType <ScrollViewer>(); if (scrollViewer != null) { var listener = new BindingListenerService(); listener.Changed += delegate { if (scrollViewer.ScrollableHeight > 0) { bool isAtBottom = scrollViewer.VerticalOffset >= scrollViewer.ScrollableHeight; if (isAtBottom) { var command = GetCommand(element); if (command != null && command.CanExecute(null)) { command.Execute(null); } } } }; Binding binding = new Binding() { Source = scrollViewer, Path = new PropertyPath("VerticalOffset") }; listener.Attach(scrollViewer, binding); element.Unloaded += ElementUnloaded; } else { System.Diagnostics.Debug.WriteLine("Error on EndOfScrollCommand: ScrollViewer not found."); } }
private static void ElementLoaded(object sender, RoutedEventArgs e) { FrameworkElement element = sender as FrameworkElement; element.Loaded -= ElementLoaded; ScrollViewer scrollViewer = element.FindChildOfType<ScrollViewer>(); if (scrollViewer != null) { var listener = new BindingListenerService(); listener.Changed += delegate { if (scrollViewer.ScrollableHeight > 0) { bool isAtBottom = scrollViewer.VerticalOffset >= scrollViewer.ScrollableHeight; if (isAtBottom) { var command = GetCommand(element); if (command != null && command.CanExecute(null)) { command.Execute(null); } } } }; Binding binding = new Binding() { Source = scrollViewer, Path = new PropertyPath("VerticalOffset") }; listener.Attach(scrollViewer, binding); element.Unloaded += ElementUnloaded; } else { System.Diagnostics.Debug.WriteLine("Error on EndOfScrollCommand: ScrollViewer not found."); } }