This will give you the first visible item in LLS.
private Dictionary<object, ContentPresenter> items; private object GetFirstVisibleItem(LongListSelector lls) { var offset = FindViewport(lls).Viewport.Top; return items.Where(x => Canvas.GetTop(x.Value) + x.Value.ActualHeight > offset) .OrderBy(x => Canvas.GetTop(x.Value)).First().Key; } private void LLS_ItemRealized(object sender, ItemRealizationEventArgs e) { if (e.ItemKind == LongListSelectorItemKind.Item) { object o = e.Container.DataContext; items[o] = e.Container; } } private void LLS_ItemUnrealized(object sender, ItemRealizationEventArgs e) { if (e.ItemKind == LongListSelectorItemKind.Item) { object o = e.Container.DataContext; items.Remove(o); } } private static ViewportControl FindViewport(DependencyObject parent) { var childCount = VisualTreeHelper.GetChildrenCount(parent); for (var i = 0; i < childCount; i++) { var elt = VisualTreeHelper.GetChild(parent, i); if (elt is ViewportControl) return (ViewportControl)elt; var result = FindViewport(elt); if (result != null) return result; } return null; }
source share