CarouselView在Item滚动后,会产生一个scrolled的事件,或者说可以放一个回调函数来执行操作,
我的设计:在主界面上放了一些导航图标,然后导航到查询页面时,查询页面顶部是设备图片,下面是设备数据,同时支持通过CarouselView的滚动功能,动态更新设备数据,看简图,
一张是这界面,就是下面的产品介绍部分,另外一张图片就是点击后的界面,
xaml文件内的大致内容,
CarouselView_Scrolled即为滚动完成后的方法,
private void CarouselView_Scrolled(object sender, ItemsViewScrolledEventArgs e)
{
if ( e.LastVisibleItemIndex == e.CenterItemIndex || e.FirstVisibleItemIndex == e.CenterItemIndex)
{
model.SwtichContent(e.CenterItemIndex);
}
}
目前存在的问题是,这个回调会被多次调用,不论是从主界面导航过去时,定位到某一个项目,还是在产品介绍界面内部,使用滑动时,都会产生好多条,因此SwtichContent这个方法就会被多次调用,
通过调试发现每次回调好像没有什么规约,回调返回的三个索引号分别是LastVisibleItemIndex ,CenterItemIndex, 和FirstVisibleItemIndex ,但好像也没有关联,最后只能用上面的逻辑作了个简单判断,仍会调用多次,跟理想中不太一样。
不知道有没有简单方法,一次确认滚动结束,调用一次即可,先只好这样放着了;
好在影响不大,在手机上或者仿真时都能正常操作,没什么影响,但总觉得浪费了CPU。
阅读(319) | 评论(0) | 转发(0) |