C# listview没有';t仅第二次更新

C# listview没有';t仅第二次更新,c#,wpf,listview,C#,Wpf,Listview,我在WPF中有一个listview,它在添加第三行之前不会添加第二行,然后所有三行都渲染。下一行将立即正确渲染。 我真的不知道为什么这只会发生在第二次 wpf代码: <ListView Name="DownloadList" Background="WhiteSmoke" PreviewMouseRightButtonUp="DownloadList_PreviewMouseRightButtonUp" > <ListView

我在WPF中有一个listview,它在添加第三行之前不会添加第二行,然后所有三行都渲染。下一行将立即正确渲染。 我真的不知道为什么这只会发生在第二次

wpf代码:

          <ListView Name="DownloadList" Background="WhiteSmoke" PreviewMouseRightButtonUp="DownloadList_PreviewMouseRightButtonUp" >
                <ListView.View>
                    <GridView>
                        <GridViewColumn Width="140" Header="Name" DisplayMemberBinding="{Binding Name}"/>
                        <GridViewColumn Width="80" Header="Status" DisplayMemberBinding="{Binding Status}"/>
                        <GridViewColumn Width="60" Header="Size" DisplayMemberBinding="{Binding FormattedSize}"/>
                        <GridViewColumn Width="70" Header="Speed" DisplayMemberBinding="{Binding FormattedSpeed}"/>
                        <GridViewColumn Width="170" Header="Progress">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <ProgressBar Height="20" Width="150" Maximum="{Binding Size}" Value="{Binding Progress}"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Width="65" Header="Time Left" DisplayMemberBinding="{Binding FormattedTime}"/>
                        <GridViewColumn Width="60" Header="Peers" DisplayMemberBinding="{Binding Peers}"/>          
                    </GridView>
                </ListView.View>
            </ListView>

需要更多的代码才能确定,但这听起来像是在UI线程上的循环中调用代码的症状,我猜您正在使用3个项目进行测试,并且只有当这个循环退出时才会更新。您是在后台线程、任务(TPL)中下载,还是使用dispatcher?@Kory Gill下载在后台线程中。向表中添加新行的代码仅在启动下载命令时运行。请注意,如果我添加第四项或第五项,它们会立即添加。这只适用于第二排。另外,我现在检查了,您可以看到listview变长了(有一个“不可见”行)
        FileDownload download = new FileDownload(fileToDownload.id, fileToDownload.DownloadName,(int)fileToDownload.Length, partsData.Length);
        wpfDownloads.Add(download);