ListBox 滑动到底部自动加载数据
2012-11-04 12:28:08 来源:WEB开发网核心提示:var visualState = e.NewState.Name; if (visualState == "NotScrolling") { var v1 = _scrollViewer.ExtentHeight - _scrollViewer.VerticalOffset; var v2
var visualState = e.NewState.Name;
if (visualState == "NotScrolling")
{
var v1 = _scrollViewer.ExtentHeight - _scrollViewer.VerticalOffset;
var v2 = _scrollViewer.ViewportHeight;
if (v1 <= v2)
{
// TODO: 在此处加载新数据
}
}
}
页面的Loaded事件
_scrollViewer = FindVisualElement<ScrollViewer>(lstBoxOne);
if (_isHookedScrollEvent)
{
return;
}
if (_scrollViewer != null)
{
_isHookedScrollEvent = true;
FrameworkElement element = VisualTreeHelper.GetChild(_scrollViewer, 0) as FrameworkElement;
if (element != null)
{
VisualStateGroup visualStateGroup = FindVisualState(element, "ScrollStates");
visualStateGroup.CurrentStateChanged += new EventHandler<VisualStateChangedEventArgs>(visualStateGroup_CurrentStateChanged);
}
}
备注:此实例只实现了在ListBox底端刷新数据。若要实现向上滚动到顶端刷新数据,只需要按照原理中的描述,修改ScrollViewer状态改变事件中的逻辑就可以了。
if (visualState == "NotScrolling")
{
var v1 = _scrollViewer.ExtentHeight - _scrollViewer.VerticalOffset;
var v2 = _scrollViewer.ViewportHeight;
if (v1 <= v2)
{
// TODO: 在此处加载新数据
}
}
}
页面的Loaded事件
_scrollViewer = FindVisualElement<ScrollViewer>(lstBoxOne);
if (_isHookedScrollEvent)
{
return;
}
if (_scrollViewer != null)
{
_isHookedScrollEvent = true;
FrameworkElement element = VisualTreeHelper.GetChild(_scrollViewer, 0) as FrameworkElement;
if (element != null)
{
VisualStateGroup visualStateGroup = FindVisualState(element, "ScrollStates");
visualStateGroup.CurrentStateChanged += new EventHandler<VisualStateChangedEventArgs>(visualStateGroup_CurrentStateChanged);
}
}
备注:此实例只实现了在ListBox底端刷新数据。若要实现向上滚动到顶端刷新数据,只需要按照原理中的描述,修改ScrollViewer状态改变事件中的逻辑就可以了。
更多精彩
赞助商链接