【问题标题】:How to add differnt sub ObservableCollections to main ObservableCollection如何将不同的子 ObservableCollection 添加到主 ObservableCollection
【发布时间】:2013-10-08 07:17:39
【问题描述】:

示例

我有

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

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

怎么办?

edited1:我想将它们添加为列表。不是每个项目。

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

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

【问题讨论】:

  • 您能否详细说明您想要实现的目标和/或您已经尝试过的目标?
  • 问题是:“如何在T 更改每个要添加的集合的位置创建ObservableCollection&lt;ObservableCollection&lt;T&gt;&gt;?”
  • @user2617677:看看我的回答:)
  • @mlorbetske 是的,它是“如何制作一个 ObservableCollection>,其中 T 会更改每个要添加的集合?”
  • @user2617677 会使该包装器集合成为ObservableCollection&lt;IList&gt; 在您的场景中工作吗?

标签: c# generics collections observablecollection


【解决方案1】:

既然你想做的是将一个集合添加到一个集合中,但是那些集合类型不兼容,我会试试这个

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


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

请注意,_collections 集合的通用参数是 IList。 ObservableCollection&lt;T&gt; 实现了IList,因此可以分配给该类型的事物,即使对于集合中的不同Ts。

【讨论】:

  • ObservableCollection 是一个好主意,一个列表的集合。 +!
【解决方案2】:

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);
        }

但是,据我了解,您正在尝试将observable collection of type department 添加到different type T,除非您尝试将其添加到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);
        }

【讨论】:

    猜你喜欢
    • 2018-12-23
    • 1970-01-01
    • 2020-09-30
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多