Windows中有一个DataGrid,它绑定到ObservableCollection,并且有一个命令可以将一个项目列表添加到集合中。
我希望DataGrid可以在循环期间逐个添加一行,但现在它将在命令完成时向DataGrid添加一批项。
<DataGrid ItemsSource="{Binding Path=InfoList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1" Binding="{Binding Path=Field1}" />
<DataGridTextColumn Header="Column2" Binding="{Binding Path=Field2}" />
</DataGrid.Columns>
</DataGrid>
public class XXViewModel : INotifyPropertyChanged
{
private ObservableCollection<Info> infoList = new ObservableCollection<Info>();
public ObservableCollection<Info> InfoList
{
get{return infoList;}
}
private void XXCommand()
{
List<Info> list = this.GetList();
foreach(var item in list)
{
// the datagrid won't update or show this item immediately
this.InfoList.Add(item);
Thread.Sleep(1000);
}
}
}
答案 0 :(得分:0)
尝试将添加代码添加到Dispatcher
的队列中:
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate
{
InfoList.Add(item);
Thread.Sleep(1000);
});
答案 1 :(得分:0)
我们无法从您的代码中识别出一些问题:
我倾向于指出1是一个受欢迎的问题。