WP & Win10开发:实现ListView下拉加载的两种方法

Cle****-he UID.1073626
2015-08-12 发表

1.通过ListView控件的ContainerContentChanging方法。该方法在列表项被实例化时触发,在列表项最后一个项目实例化的时候触发刷新数据逻辑就可以实现下拉加载了。

代码如下:
//list_ContainerContentChanging在列表项被实例化是触发。
[mw_shl_code=csharp,true]private void list_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
{
if (!isLoading)
{
if (args.ItemIndex == list.Items.Count - 1)
{
isLoading = true;
//加载需要加载的内容
Task.Factory.StartNew(async () =>
{
await Task.Delay(1000);
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
int sum = Items.Count;
for (int i = sum; i < sum+50; i++)
{
Items.Add(new Item(i.ToString()));
}
isLoading = false;
});

});

}
}
}[/mw_shl_code]

2.通过获取ListVeiw的ScrollViewer 和 ScrollBar,监控ScrollBar的ValueChange事件,在ScroolBar滚动到最底部时触发刷新数据逻辑。

代码如下:
//在ListView加载后获取Scrollview和ScrollBar,否则可能会获取不到。
[mw_shl_code=csharp,true]private void list_Loaded(object sender, RoutedEventArgs e)
{
sv = FindVisualChildByName<ScrollViewer>(list, "ScrollViewer");
sb = FindVisualChildByName<ScrollBar>(sv, "VerticalScrollBar");
sb.ValueChanged += Sb_ValueChanged;

}

private void Sb_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
if(e.NewValue > e.OldValue && e.NewValue >= sb.Maximum)
{
if (!isLoading)
{
isLoading = true;
//加载需要加载的内容。
Task.Factory.StartNew(async () =>
{
await Task.Delay(1000);
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
int sum = Items.Count;
for (int i = sum; i < sum+50; i++)
{
Items.Add(new Item(i.ToString()));
}
isLoading = false;
});

});

}
}

}[/mw_shl_code]

demo分享地址:http://pan.baidu.com/s/1dDlmwH7

感兴趣的小伙伴欢迎加入我的Win10开发交流群:53078485

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
ni****41 UID.158211
2015-08-12 回复

不明觉厉

sxcy UID.633674
2015-08-12 回复

赞一个!

永远的NO.1 UID.343015
2015-08-12 使用 Lumia 1520 回复

不明觉厉,但还是要顶一下

wucd UID.573665
2015-08-12 回复

路过学习一下。

h82****652 UID.880817
2015-08-12 回复

我还以为是安卓那种下拉刷新,原来是到底部加载…………{:6_232:}

Cle****-he UID.1073626
2015-08-12 回复

Quote***链接停止解析***
我还以为是安卓那种下拉刷新,原来是到底部加载…………


你有的话可以分享下,大家共同学习{:6_234:}

我是灯柱 UID.358482
2015-08-12 使用 Lumia 830 回复

如果最开始实例化时候加载的数据正好满一屏,那么无论如何拉也不会触发加载消息了。

Atuke UID.424556
2015-08-12 回复

已加群,请通过。谢谢。

cj****15 UID.1154720
2015-08-16 使用 Lumia 640 XL 回复

顶一个,不错

wcavell UID.34926
2015-08-16 回复

Quote***链接停止解析***
你有的话可以分享下,大家共同学习


微软的demo ***链接停止解析***

cj****15 UID.1154720
2015-08-16 使用 Lumia 640 XL 回复

挺好的,支持一下

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报