0

例子

我有

ObservableCollection<Employee> // 1
ObservableCollection<Boss>// 2
ObservableCollection<Department> //3

ObservableCollection<T> // main >>>I want 1, 2, 3 ObservableCollection to main ObservableCollection

怎么做?

已编辑1:我想将它们添加为列表。不是每个项目。

编辑2:我必须在 wpf 应用程序上显示 3 个字段列表。第二个列表可以添加/删除列表中的项目。

** 如果不清楚,请告诉我。

4

2 回答 2

2

由于您想要做的是将集合添加到集合中,但这些集合类型不兼容,我会试试这个

ObservableCollection<Employee> _employees = ...
ObservableCollection<Boss> _bosses = ...
ObservableCollection<Department> _departments = ...


ObservableCollection<IList> _collections = ...
_collections.Add(_employees);
_collections.Add(_bosses);
_collections.Add(_departments);

请注意,该_collections集合的通用参数是IList. ObservableCollection<T>实现IList并因此可分配给该类型的事物,即使对于T集合中的不同 s。

于 2013-10-08T07:54:09.970 回答
0

Observable Collection 不支持AddRange您可以将整个列表添加到现有列表的功能。

顺便说一句,如果你所有的 observable 集合都是 T 类型,你可以使用它foreach来遍历并执行adding,如下所示:

        var observableCollection1 = new ObservableCollection<string>();
        var observableCollection = new ObservableCollection<string>();

        foreach (var element in observableCollection1)
        {
            observableCollection.Add(element);
        }

但是,据我了解,您正在尝试将 an 添加observable collection of type department到 adifferent type T中,除非您尝试将其添加到 a 中,否则这是不可能的observable collection of simply, objects。警告:请注意,之后您可能需要装箱/拆箱。

Code Snippet:

        var observableCollection_Department = new ObservableCollection<Department>();
        var observableCollection_Employee = new ObservableCollection<Employee>();
        var observableCollection_Boss = new ObservableCollection<Boss>();

        var observableCollection = new ObservableCollection<object>();

        foreach (var element in observableCollection_Department)
        {
            observableCollection.Add(element);
        }

        foreach (var element in observableCollection_Employee)
        {
            observableCollection.Add(element);
        }

        foreach (var element in observableCollection_Boss)
        {
            observableCollection.Add(element);
        }
于 2013-10-08T07:26:59.600 回答