Проблема наблюдаемой коллекции Silverlight - PullRequest
1 голос
/ 10 ноября 2010

У меня есть две коллекции наблюдателей, как показано ниже

public ObservableCollection<Employee> AllEmployees
{
  get { return _allEmployees; }
  set { _allEmployees = value;  }
}

public ObservableCollection<Employee> EmployeesToDisplay
{
   get { return _employeesToDisplay; }
   set { _employeesToDisplay = value;  }
}

Они оба индивидуально устанавливаются значением, возвращаемым сервисом wcf.

                AllEmployees = ListofEmployees ;
                EmployeesToDisplay= ListofEmployees;

При изменении комбинированного списка, который позволяет мне выбирать активных или неактивных сотрудников, я запускаю следующий запрос Linq для AllEmployees

var employeeEnabled = от субъекта в AllEmployees где entity.IsEnabled == true Сортировать по сущности. Имя по возрастанию выберите объект;

и затем присвойте возвращаемое значение EmployeesToDisplay, как показано ниже:

EmployeesToDisplay.Clear();
EmployeesToDisplay.Add(employeesEnabled as Employee);

Проблема в следующем: Когда я перехожу эту строку «EmployeesToDisplay.Clear ()» ... она даже очищает «AllEmployees»

Есть идеи, почему это происходит? и как это обойти?

Спасибо за ваше время ...

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Измените ваш «набор» с «копировать по ссылке» на «копировать по значению».

set { _employeesToDisplay = new ObservableCollection<Employee>( value );  }
1 голос
/ 10 ноября 2010

Не могли бы вы предоставить немного больше кода, возможно? Эти две коллекции не зависят друг от друга и, хотя они указывают на одни и те же объекты, они не зависят друг от друга, поэтому очистка одной не должна изменять другую.

Кроме того, вы не можете добавить несколько элементов в ObservableCollection с помощью метода Add; Вы должны делать это по одному предмету за раз. И вы также пытаетесь привести IEnumerable к Employee, что приведет к добавлению нулевого значения в вашу коллекцию

...