Example #1
0
        void ReturnListener()
        {
            listener.Changed -= HandleValueChanged;

            freeListeners.Add(listener);

            listener = null;
        }
Example #2
0
        void Attach()
        {
            Detach();

            if (target != null && binding != null)
            {
                listener = GetListener();
                listener.Attach(target, binding);
            }
        }
Example #3
0
        DependencyPropertyListener GetListener()
        {
            DependencyPropertyListener listener;

            if (freeListeners.Count != 0)
            {
                listener = freeListeners[freeListeners.Count - 1];
                freeListeners.RemoveAt(freeListeners.Count - 1);

                return(listener);
            }
            listener = new DependencyPropertyListener();

            listener.Changed += HandleValueChanged;

            return(listener);
        }
        void Attach()
        {
            Detach();

            if (target != null && binding != null)
            {
                listener = GetListener();
                listener.Attach(target, binding);
            }
        }
        void ReturnListener()
        {
            listener.Changed -= HandleValueChanged;

            freeListeners.Add(listener);

            listener = null;
        }
        DependencyPropertyListener GetListener()
        {
            DependencyPropertyListener listener;

            if (freeListeners.Count != 0)
            {
                listener = freeListeners[freeListeners.Count - 1];
                freeListeners.RemoveAt(freeListeners.Count - 1);

                return listener;
            }
            listener = new DependencyPropertyListener();

            listener.Changed += HandleValueChanged;

            return listener;
        }
Example #7
0
        static void element_Loaded(object sender, RoutedEventArgs e)
        {
            FrameworkElement element = (FrameworkElement)sender;

            element.Loaded -= element_Loaded;
            ScrollViewer scrollViewer = FindChildOfType <ScrollViewer>(element);

            if (scrollViewer == null)
            {
                throw new InvalidOperationException("ScrollViewer not found.");
            }

            var listener = new DependencyPropertyListener();

            listener.Changed
                += delegate
                {
                // This bool denotes first load when an xaml element is loaded with no elements
                bool firstLoad = (Math.Round(scrollViewer.VerticalOffset) == 0) &&
                                 (Math.Round(scrollViewer.ScrollableHeight) == 0);

                bool atBottom = Math.Round(scrollViewer.VerticalOffset)
                                >= Math.Round(scrollViewer.ScrollableHeight);

                if (atBottom && !firstLoad)
                {
                    //GlobalLoading.Instance.IsLoading = true;

                    if (element.Name.Equals("recentPictures"))
                    {
                        foreach (PictureInfo p in App.ContinuedRecentPictures)
                        {
                            App.RecentPictures.Add(p);
                        }

                        App.ContinuedRecentPictures.Clear();
                    }
                    else if (element.Name.Equals("UserPictures"))
                    {
                        int count = 0;
                        int numberOfPicturesPerLoad = 24;
                        foreach (PictureInfo p in UserDetailPage.ContinuedUserPictures)
                        {
                            // Only load 24 PictureInfo objects at a time
                            if (count < numberOfPicturesPerLoad)
                            {
                                App.UserPictures.Add(p);
                                count++;
                            }
                            else
                            {
                                break;
                            }
                        }

                        // Now we delete those PictureInfo objects that were added
                        for (int i = 0; i < numberOfPicturesPerLoad; i++)
                        {
                            if (UserDetailPage.ContinuedUserPictures.Count == 0)
                            {
                                break;
                            }
                            UserDetailPage.ContinuedUserPictures.RemoveAt(0);
                        }
                    }

                    /*
                     * var atEnd = GetAtEndCommand(element);
                     * if (atEnd != null)
                     * {
                     * atEnd.Execute(null);
                     * }*/
                }
                };
            Binding binding = new Binding("VerticalOffset")
            {
                Source = scrollViewer
            };

            listener.Attach(scrollViewer, binding);
        }