2008-10-28 6 views

Répondre

38

Non, il n'existe aucun moyen de convertir directement la liste en une collection observable. Vous devez ajouter chaque élément à la collection. Cependant, ci-dessous est un raccourci pour permettre au framework d'énumérer les valeurs et de les ajouter pour vous.

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

Je suis en retard mais je veux partager cette pièce intéressante pour convertir une liste en ObservableCollection si vous avez besoin d'une boucle:

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

Vous pouvez passer une collection au constructeur de ObservableCollection:

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

maintenant, vous devez traduire ces à VB.NET :)

+0

C'est C# VB.NET pas, mais de toute façon +1 pour le résoudre pour tout IEnumerable (et aussi pour être en retard!) – MarkJ

+0

Cool blague! C'est un vrai humour subtil !! – RredCat

2

à clarifier ce que dit junior (avec un exemple ajouté si vous utilisez LINQ qui retourne 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

s'il vous plaît mettre ici la description de votre réponse. –

1

Même si je suis en retard, je veux partager une amélioration rapide de Junior La réponse: laissez le développeur définir la fonction de conversion utilisée pour convertir les objets de collection observables de la collection source vers celle de destination.

Comme les éléments suivants:

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