C# LongListSelector的ItemRealized/ItemUnrealized事件何时准确触发?

C# LongListSelector的ItemRealized/ItemUnrealized事件何时准确触发?,c#,windows-phone-8,C#,Windows Phone 8,我试图使用“LongListSelector”和“ItemRealized”/“ItemUnrealized”事件实现无限滚动。我使用的是“ObservableCollection”,它在任何时候都包含“已实现”元素以及集合开始和结束时的“Offset”元素,这保证了集合只包含固定数量的元素 下面是我在每次“ItemRealized”/“ItemUnrealized”事件后调用的“FixList”函数的代码: void FixList() { while (Mat

我试图使用“LongListSelector”和“ItemRealized”/“ItemUnrealized”事件实现无限滚动。我使用的是“ObservableCollection”,它在任何时候都包含“已实现”元素以及集合开始和结束时的“Offset”元素,这保证了集合只包含固定数量的元素

下面是我在每次“ItemRealized”/“ItemUnrealized”事件后调用的“FixList”函数的代码:

    void FixList()
    {
        while (Math.Max(0, ItemList.Count - LoadedEnd) > Offset)
        {
            ItemList.RemoveAt(ItemList.Count - 1);
            SourceEnd--;
        }

        while (Math.Max(0, ItemList.Count - LoadedEnd) < Offset)
        {
            ItemList.Add(DataSource.GetCell((uint)SourceEnd));
            SourceEnd++;
        }

        while (LoadedStart >= Offset)
        {
            ItemList.RemoveAt(0);
            SourceStart++;
            LoadedStart--;
            LoadedEnd--;
        }

        while (LoadedStart < Offset - 1 && SourceStart > 0)
        {
            ItemList.Insert(0, DataSource.GetCell((uint)SourceStart - 1));
            SourceStart--;
            LoadedStart++;
            LoadedEnd++;
        }
    }
这似乎完全不合逻辑,因为我甚至没有滚动(不合逻辑的是,它多次加载和卸载相同的元素)

奇怪的是,这只发生在启动时,当我向下滚动一点时,事件似乎会正确触发(不再需要元素时卸载,即将查看时加载)

load Test 0
load Test 1
load Test 2
load Test 3
load Test 4
load Test 5
load Test 6
load Test 7
load Test 8
load Test 9
load Test 10
load Test 11
load Test 12
load Test 13
load Test 14
load Test 15
load Test 16
Unload Test 16
Unload Test 15
load Test 10
load Test 11
load Test 12
load Test 13
load Test 14
Unload Test 14
Unload Test 13
Unload Test 12
Unload Test 11
Unload Test 10
load Test 15
load Test 16
load Test 17
load Test 18
load Test 19
load Test 20
load Test 21
load Test 22
load Test 23