2008-10-28 29 views

Trả lời

38

Không, không có cách nào để chuyển đổi trực tiếp danh sách thành bộ sưu tập có thể quan sát được. Bạn phải thêm từng mục vào bộ sưu tập. Tuy nhiên, bên dưới là lối tắt để cho phép khung liệt kê các giá trị và thêm chúng cho bạn.

Dim list as new List(of string) 
...some stuff to fill the list... 
Dim observable as new ObservableCollection(of string)(list) 
18

tôi đến trễ nhưng tôi muốn chia sẻ phần thú vị này để chuyển đổi một danh sách vào một ObservableCollection nếu bạn cần một vòng lặp:

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

Bạn có thể vượt qua một bộ sưu tập để các nhà xây dựng ObservableCollection:

List<Product> myProds = ...... 
ObservableCollection<Product> oc = new ObservableCollection<Product>(myProds); 

Bây giờ bạn phải dịch này để VB.NET :)

+0

Đó là C# không VB.NET nhưng 1 nào để giải quyết nó cho bất kỳ IEnumerable (và cũng cho là muộn!) – MarkJ

+0

Trò đùa thú vị! Đó là sự hài hước tinh tế thực sự !! – RredCat

2

để làm rõ những gì Junior đang nói (với một ví dụ thêm nếu bạn đang sử dụng LINQ trả về một IEnumerable):

//Applications is an Observable Collection of Application in this example 
List<Application> filteredApplications = 
     (Applications.Where(i => i.someBooleanDetail)).ToList(); 
Applications = new ObservableCollection<Application>(filteredApplications); 
2
//Create an observable collection TObservable. 

ObservableCollection (TObservable) =new ObservableCollection (TObservable)(); 

//Convert List items(OldListItems) to collection 

OldListItems.ForEach(x => TObservable.Add(x)); 
0
ObservableCollection<yourobjectname> result = new ObservableCollection<yourobjectname>(yourobjectlist); 
+0

vui lòng đặt ở đây mô tả câu trả lời của bạn. –

1

Mặc dù tôi đang muộn, tôi muốn chia sẻ một nâng cao nhanh chóng để Junior Câu trả lời: cho phép nhà phát triển xác định chức năng chuyển đổi được sử dụng để chuyển đổi các đối tượng sưu tập quan sát từ bộ sưu tập nguồn sang đích.

Giống như sau:

public static ObservableCollection<TDest> ToObservableCollection<TDest, TSource>(this IEnumerable<TSource> coll, Func<TSource, TDest> converter) 
    { 
     var c = new ObservableCollection<TDest>(); 
     foreach (var e in coll) 
     { 
      c.Add(converter(e)); 
     } 
     return c; 
    } 
Các vấn đề liên quan