我有两个清晰的LongListSelectors - 没有任何修改,只是从工具箱拖动并更改了名称。
我使用下面的代码填充它们(其中一个需要排序):
closestList.ItemsSource = spots;
allList.ItemsSource = spots.OrderBy(x => x.name).ToList();
第一个列表工作正常,但第二个列表是空的 - 没有错误。当我将第二行更改为:allList.ItemsSource = spots;
时,它正常工作
那种怎么回事?
答案 0 :(得分:2)
在您编写自己的代码时,spots
为空且不包含任何项目。当您将数据源定义为对spots
的引用时,它能够识别何时添加项目(如果spots
是一个可观察的集合,它看起来确实如此),这意味着在未来,当项目添加到spots
时,UI将会更新。
您的第二个代码段未将数据源设置为spots
的引用,而是将该数据源设置为该时刻的集合的副本。在那个时刻它是空的,并且由于复制它的行为现在已经从spots
离开了该数据源,当项目被添加到spots
时它将永远不会被通知,所以它保持< / em>空。