我有两个观察集合,如下面的
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;
在更改允许我选择活跃员工或非活动员工的组合框时,我在'AllEmployees'上运行以下Linq查询
var employeesEnabled =来自AllEmployees中的实体 其中entity.IsEnabled == true orderby entity.Name升序 选择实体;
然后将返回的值分配给EmployeesToDisplay,如下所示:
EmployeesToDisplay.Clear();
EmployeesToDisplay.Add(employeesEnabled as Employee);
问题是: 当我走过这条线'EmployeesToDisplay.Clear()'时......它甚至会清除'AllEmployees'
知道为什么会这样吗?以及如何绕过它?
感谢您的时间......
答案 0 :(得分:2)
将'set'从'按引用复制'更改为'按值复制'。
set { _employeesToDisplay = new ObservableCollection<Employee>( value ); }
答案 1 :(得分:1)
你能提供更多代码吗?这两个集合彼此独立,虽然它们指向相同的对象,但它们并不相互依赖,因此清除它们不应该修改另一个。
此外,您无法使用Add方法向ObservableCollection添加多个项目;你必须一次做一件事。并且您还尝试将IEnumerable转换为Employee,这将导致将null值添加到您的集合中