我希望我的MobileServiceIncrementalLoadingCollection<Video, Video> Videos;
(绑定到ListView)使用我的Azure数据库中的新行每5秒更新一次。
页面加载
Videos = VideoTable.ThenByDescending(x => x.DateTime).ToIncrementalLoadingCollection();
在该阶段,Videos
集合已加载第一个项目(因为它是增量加载集合),并且在ListView
中可见。
之后,每隔5秒我执行以下代码(不能正常工作/在集合中添加新行)
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);
}
我不想使用Videos = tempVideos
,因为整个ListView
正在更新,并且每5秒钟显示每个项目AddDeleteThemeTransition
,这真非常令人讨厌和丑陋。
所以我的问题是,
如何在创建集合后在MobileServiceIncrementalLoadingCollection
中添加新添加的表行,而无需重新创建集合?
PS。如果重要的话,我正在使用.NET后端。
答案 0 :(得分:0)
这听起来像你想要的
1)将新项目添加到您的集合中,但前提是它们在初始调用中不存在于数据库中。 2)查看已排序的集合
回答:
1)这实际上不是ToIncrementalLoadingCollection()的重点,它更适合于滚动类型动作的分页或加载。为此,控件将在需要时自动调用LoadMoreItemsAsync()。
听起来您想要加载所有记录,然后使用新记录更新集合。您需要实现一个查询,该查询可以识别数据库中的新查询,并将它们添加到您的集合中。
2)我假设你正在使用带有ISupportIncrementalLoading的ObservableCollection,然后诀窍是对视图进行排序和过滤而不是集合。 这意味着您并不关心将项添加到ObservableCollection的顺序。 在您的视图中,您应该在XAML中实现绑定到ObservableCollection的CollectionViewSource资源。