我正在使用ObservableCollection,它以这种方式绑定到以ComboBox创建的UI中的复选框:
<CheckBox IsChecked="{Binding Path=theItemIsSelected, Mode= TwoWay}" Margin="0,0,4,0" />
在这种情况下,“theItemIsSelected”是一个布尔值,只是一个标志,表示该项是被选中的。启用/禁用其他列表中的某些项目(让我们称之为“主列表”)将显示/隐藏在主Listview上。
事实是,如果“主列表”包含多个元素,那么如果逐个启用标志theItemIsSelected
,则UI会缓慢更新。当用户按下“全选”复选框时,将调用此段代码:
if (this.myObsCol != null)
{
for (int i = 0; i < this.myObsCol.Count; i++)
{
//This line allows to display the elements in the main list
this.myObsCol[i].theItemIsSelected = true;
}
}
有没有更简洁的方法可以更快地显示主列表中的元素?
感谢。
答案 0 :(得分:1)
您可以在此方案中使用并行LINQ:
if (this.myObsCol != null)
{
myObsCol.AsParallel()
.ForAll(x => x.theItemIsSelected = true);
}