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