【发布时间】:2013-08-07 06:15:49
【问题描述】:
我在 wpf 中,并且有一个通用列表:List。 现在我希望将其转换为通用的可观察集合:ObservableCollection。
我知道我可以遍历列表并将每个单独的项目添加到 Observable 集合中。 但是,在我看来,必须有一种内置的方法来做到这一点。
【问题讨论】:
-
没有办法强制转换为不兼容的类型,即使它存在,当你尝试使用它时你的程序也会崩溃。
我在 wpf 中,并且有一个通用列表:List。 现在我希望将其转换为通用的可观察集合:ObservableCollection。
我知道我可以遍历列表并将每个单独的项目添加到 Observable 集合中。 但是,在我看来,必须有一种内置的方法来做到这一点。
【问题讨论】:
如果您只想从List 创建一个ObservableCollection,那么您需要做的就是
ObservableCollection<MyType> obsCollection = new ObservableCollection<MyType>(myList);
【讨论】:
ObservableCollection 具有 IEnumerable<T> ObservableCollection 的构造函数
ObservableCollection<yourType> observable =
new ObservableCollection<yourType>(yourListObject);
【讨论】:
var _oc = new ObservableCollection<ObjectType>(_listObjects);
【讨论】:
你可以使用扩展方法来做到这一点
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);
【讨论】: