WPF ObservableCollection立即更改属性

时间:2016-01-20 09:26:11

标签: c# wpf observablecollection

我正在使用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;
    }
} 

有没有更简洁的方法可以更快地显示主列表中的元素?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以在此方案中使用并行LINQ:

if (this.myObsCol != null) 
{
    myObsCol.AsParallel()
            .ForAll(x => x.theItemIsSelected = true);
}