C# 获取新行-Azure移动服务
我想要我的C# 获取新行-Azure移动服务,c#,azure,azure-mobile-services,C#,Azure,Azure Mobile Services,我想要我的MobileServiceIncrementalLoadingCollection视频(绑定到ListView)每5秒更新一次my Azure数据库中的新行(如果有) 页面加载 Videos = VideoTable.ThenByDescending(x => x.DateTime).ToIncrementalLoadingCollection(); 在该阶段,视频集合加载了第一个项目(因为它是一个增量加载集合),并且在列表视图中可见 之后,每隔5秒我执行以下代码(不工作/在集
MobileServiceIncrementalLoadingCollection视频代码>(绑定到ListView)每5秒更新一次my Azure数据库中的新行(如果有)
页面加载
Videos = VideoTable.ThenByDescending(x => x.DateTime).ToIncrementalLoadingCollection();
在该阶段,视频
集合加载了第一个项目(因为它是一个增量加载集合),并且在列表视图
中可见
之后,每隔5秒我执行以下代码(不工作/在集合中添加新行)
我不想使用Videos=tempVideos
,因为整个ListView
正在更新,而且adddeletetethemetransition
每5秒钟为每个项目显示一次,这真是令人讨厌和难看
所以我的问题是,
创建集合后,如何在MobileServiceIncrementalLoadingCollection
中添加新添加的表行,而不重新创建集合
另外,如果有必要的话,我正在使用.NET后端。听起来像是你想要的
1) 将新项目添加到集合中,但前提是在初始调用时数据库中不存在这些项目。
2) 查看已排序的集合
var tempVideos = VideoTable.ThenByDescending(x => x.DateTime).ToIncrementalLoadingCollection();
var newVideos = tempVideos.Where(x => !Videos.Contains(x, new VideoComparer()));
foreach (Video v in newVideos)
{
Videos.Insert(0, v);
}
答复:
1) 这并不是增加加载集合()的重点,它更适合分页或滚动加载类型的操作。为此,控件将在需要时自动调用LoadMoreItemsAsync()
听起来您想加载所有记录,然后用新记录更新集合。您需要实现一个查询,该查询可以识别数据库中的新数据,并将它们添加到集合中
2) 我假设您使用的是一个带有ISupportIncrementalLoading的observateCollection,那么诀窍是对视图进行排序和过滤,而不是对集合进行排序和过滤。
这意味着您不太关心将项添加到ObservableCollection的顺序。
在您的视图中,您应该实现一个CollectionViewSource资源,该资源绑定到XAML中的ObservableCollection。这行不是吗Videos.Insert(0,v)代码>将每个新视频添加到索引0,而不是集合的结尾?是的,这就是我想要的。我希望在开始时添加新视频,因为视频收集是按日期时间降序的。啊,我明白了。如果HasMoreItems
为true,您不能每隔5秒调用Videos.LoadMoreItemsAsync()
?如果每隔5秒调用LoadMoreItemsAsync一次,加载的项目将在列表中可见,则可能必须对此进行测试,因为ThinkMobileServiceIncrementalLoadingCollection
自动执行了此操作。不幸的是,这不是增量加载集合的正确用法。此外,我只想使用添加到数据库中Videos=VideoTable之后的新项更新集合。然后使用降序(x=>x.DateTime)。ToIncrementalLoadingCollection()代码>在页面加载1)我想使用滚动加载,这就是我使用来增加加载集合的原因。我只想在绑定的列表视图的开头显示新记录。是的,这就是我想做的。2) 不过,谢谢你的建议。这对我很有帮助。您是否使用CollectionViewSource获取UI排序顺序?