【问题标题】:How to cast a List<T> to an ObservableCollection<T> in wpf?如何在 wpf 中将 List<T> 转换为 ObservableCollection<T>?
【发布时间】:2013-08-07 06:15:49
【问题描述】:

我在 wpf 中,并且有一个通用列表:List。 现在我希望将其转换为通用的可观察集合:ObservableCollection。

我知道我可以遍历列表并将每个单独的项目添加到 Observable 集合中。 但是,在我看来,必须有一种内置的方法来做到这一点。

【问题讨论】:

标签: c# wpf


【解决方案1】:

如果您只想从List 创建一个ObservableCollection,那么您需要做的就是

ObservableCollection<MyType> obsCollection = new ObservableCollection<MyType>(myList);

【讨论】:

  • 这个问题是它会尝试浅克隆 myList。如果不这样做,请在 myList 上做一个 foreach 并将其添加到 obsCollection,这样引用将是相同的。
【解决方案2】:

ObservableCollection 具有 IEnumerable&lt;T&gt; ObservableCollection 的构造函数

ObservableCollection<yourType> observable = 
        new ObservableCollection<yourType>(yourListObject);

【讨论】:

    【解决方案3】:
    var _oc = new ObservableCollection<ObjectType>(_listObjects);
    

    【讨论】:

      【解决方案4】:

      你可以使用扩展方法来做到这一点

      public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> coll)
      {
          var c = new ObservableCollection<T>();
          foreach (var e in coll) c.Add(e);
          return c;
      }
      

      或者你可以使用这个constructor 将元素复制到 ObservableCollection 中,其顺序与列表的枚举器读取它们的顺序相同。

      ObservableCollection<YourObject> collection = new ObservableCollection<YourObject>(yourList);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-30
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        相关资源
        最近更新 更多