void ReturnListener() { listener.Changed -= HandleValueChanged; freeListeners.Add(listener); listener = null; }
void Attach() { Detach(); if (target != null && binding != null) { listener = GetListener(); listener.Attach(target, binding); } }
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; }
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); }