代码之家  ›  专栏  ›  技术社区  ›  user20358

Silverlight可观测集合问题

  •  1
  • user20358  · 技术社区  · 14 年前

    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实体.名称升序 选择实体;

    然后将返回值分配给EmployeesToDisplay,如下所示:

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

    当我经过这行“EmployeesToDisplay.Clear()”时。。。它甚至清除了“所有员工”

    谢谢你的时间。。。

    2 回复  |  直到 14 年前
        1
  •  2
  •   jyoung    14 年前

    将“set”从“copy by reference”更改为“copy by value”。

    set { _employeesToDisplay = new ObservableCollection<Employee>( value );  }
    
        2
  •  1
  •   amc    14 年前

    你能提供更多的代码吗?这两个集合彼此独立,尽管它们指向相同的对象,但它们并不相互依赖,因此清除一个集合时不应修改另一个集合。

    此外,不能使用add方法向observatecollection添加多个项;必须一次添加一个项。您还试图将IEnumerable强制转换为Employee,这将导致向集合中添加空值