Exemplo n.º 1
0
        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.");
            }
        }
Exemplo n.º 2
0
        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.");
            }
        }