2016-01-20 5 views
0

Я работаю с ObservableCollection с привязкой к флажков в интерфейсе пользователя, созданного в ComboBox так:WPF ObservableCollection изменить свойство сразу

<CheckBox IsChecked="{Binding Path=theItemIsSelected, Mode= TwoWay}" Margin="0,0,4,0" /> 

В этом случае, «theItemIsSelected» является логическим, просто чтобы указать, что элемент выбран или нет. Когда включено/выключено, некоторые элементы в другом списке (назовем его «главный список») отображаются/скрыты в основном списке.

Дело в том, что если «10 главный список» содержит несколько элементов, пользовательский интерфейс обновляется медленно, если флаг theItemIsSelected включен один за другим. Эта часть кода вызывается, когда пользователь нажимает «Выбрать все» флажок:

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

попробовать это: this.myObsCol.Select (О.Б. => ob.theItemIsSelected = истина); – Jamaxack

ответ

1

Вы можете использовать параллельный LINQ для этого сценария:

if (this.myObsCol != null) 
{ 
    myObsCol.AsParallel() 
      .ForAll(x => x.theItemIsSelected = true); 
} 
Смежные вопросы