到目前为止,我无法找到任何类似的问题,所以我会在这里问:
我有一个项目源(比如一个10人的列表)绑定到ListView。该列表是异步填充的,比方说,列表项将在一秒钟内添加一个项目(人)。你能教我如何让我的ListView从第一个项目开始显示项目,而不是等待第十个项目,然后一起显示它们吗?
任何工作样本都将受到赞赏。
提前谢谢。
XAML:
<ListView ItemsSource="{Binding tempData, Mode=TwoWay}" Width="1000" Height="1000">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="100" Height="50">
<TextBlock Text="{Binding name}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
CS(坦白说我正在使用云服务,所以实际代码基本上就像:
await app.WorkWith().Data<Person>().GetAll().ExecuteAsync();
所以,我认为上面的行意味着:
private async Task<List<Person>> GenerateItem()
{
List<Person> tempData = new List<Person>();
tempData.Add(new Person() { name = "name1"});
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
tempData.Add(new Person() { name = "name1" });
await Task.Delay(1000);
return tempData;
}
最后:
private async void Populate()
{
List<Person> tempData = await GenerateItem();
listView1.ItemsSource = tempData;
}
答案 0 :(得分:1)
只需使用ObservableCollection ....当项目被添加到集合时,会引发CollectionChanged并且您的listview / gridview自行更新