कुछ इसी तरह पता लगाने की कोशिश के बाद, मैंने सोचा था कि मैं अपने परिणाम यहाँ शेयर करना चाहते हैं (जैसा कि अन्य प्रतिक्रियाओं की तुलना में आसान लगता है):
सरल दृश्यता परीक्षण मुझे here से मिला है।
private static bool IsUserVisible(FrameworkElement element, FrameworkElement container)
{
if (!element.IsVisible)
return false;
Rect bounds =
element.TransformToAncestor(container).TransformBounds(new Rect(0.0, 0.0, element.ActualWidth, element.ActualHeight));
var rect = new Rect(0.0, 0.0, container.ActualWidth, container.ActualHeight);
return rect.Contains(bounds.TopLeft) || rect.Contains(bounds.BottomRight);
}
बाद में आप ListBoxItems के माध्यम से लूप और कहा कि परीक्षण का उपयोग यह निर्धारित करने के दिखाई दे रहे हैं कर सकते हैं।
private List<object> GetVisibleItemsFromListbox(ListBox listBox, FrameworkElement parentToTestVisibility)
{
var items = new List<object>();
foreach (var item in PhotosListBox.Items)
{
if (IsUserVisible((ListBoxItem)listBox.ItemContainerGenerator.ContainerFromItem(item), parentToTestVisibility))
{
items.Add(item);
}
else if (items.Any())
{
break;
}
}
return items;
}
आप यहाँ एक जवाब है: http://stackoverflow.com/questions/11187382/get-listview-visible-items – GameAlchemist