2008-10-28 21 views

Respuesta

38

No, no hay forma de convertir directamente la lista a una colección observable. Debe agregar cada elemento a la colección. Sin embargo, a continuación hay un atajo para permitir que el marco enumere los valores y los agregue por usted.

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

llego tarde, pero quiero compartir esta pieza interesante para convertir una lista en un ObservableCollection si necesita un bucle:

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

Se podía pasar una colección al constructor ObservableCollection:

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

Ahora tiene que traducirlos a VB.NET :)

+0

Eso es C# VB.NET no, pero de todos modos para la solución de 1 por cualquier IEnumerable (y también por llegar tarde) – MarkJ

+0

¡Broma genial! ¡Es un humor realmente sutil! – RredCat

2

a aclarar lo que está diciendo junior (con un ejemplo adicional si usted está utilizando LINQ que devuelve un 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

por favor ponga aquí la descripción de su respuesta. –

1

pesar de que estoy tarde, quiero compartir una mejora rápida a Junior Respuesta: permita que el desarrollador defina la función de conversión utilizada para convertir objetos de colección observables de la colección de origen a la de destino.

como la siguiente:

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