如何检测ListView何时到达和结束在Windows 10通用应用程序开发
本文关键字:结束 Windows 10通 应用程序开发 何检测 检测 何时 ListView | 更新日期: 2023-09-27 18:01:30
我遵循这个链接检测WPF列表视图滚动条何时在底部?
但滚动条。滚动不存在的ListView在Windows 10 ..如何在Windows 10中实现此要求
谢谢
使用这里描述的方法如何检测到达ScrollViewer项目的结束(Windows 8)?
如果你想要增量加载,有一个内置的解决方案。否则,在模板中遍历scrollviewer对象的可视树。
只需检测ScrollViewer
的VerticalOffset
和ScrollableHeight
即可。下面是我的简单代码:
XAML:
<!--Apply ScrollViwer over the ListView to detect scrolling-->
<ScrollViewer Name="ContentCommentScroll" Grid.Row="2"
ViewChanged="ContentCommentScroll_ViewChanged" ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<!--My Dynamic ListView-->
<ListView Name="MyDataList" ItemsSource="{Binding MyList}"
ItemTemplate="{StaticResource MyDataTemplate}"
ItemContainerStyle="{StaticResource myStyle}"/>
</ScrollViewer>
和代码在其XAML.CS:
// Hold ScrollViwer
public ScrollViewer listScrollviewer = new ScrollViewer();
// Binded event, which will trigger on scrolling of ScrollViewer
private void ContentCommentScroll_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
Scrolling(ContentCommentScroll);
}
private void Scrolling(DependencyObject depObj)
{
ScrollViewer myScroll= GetScrollViewer(depObj);
// Detecting if ScrollViewer is fully vertically scrolled or not
if (myScroll.VerticalOffset == myScroll.ScrollableHeight)
{
// ListView reached at of its end, when you are scrolling it vertically.
// Do your work here here
}
}
public static ScrollViewer GetScrollViewer(DependencyObject depObj)
{
if (depObj is ScrollViewer) return depObj as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
var child = VisualTreeHelper.GetChild(depObj, i);
var result = GetScrollViewer(child);
if (result != null) return result;
}
return null;
}
您也可以应用类似的逻辑来检测ListView
Horizontally
是否到达其结束
您可以用ScrollViewer包装它并命名它。然后你可以使用其他方法