Gibt es eine Möglichkeit, dies zu tun, ohne die Liste zu durchlaufen und die Elemente der ObservableCollection hinzuzufügen?
Nein, es gibt keine Möglichkeit, die Liste direkt in eine beobachtbare Sammlung umzuwandeln. Sie müssen jedes Element zur Sammlung hinzufügen. Nachfolgend finden Sie jedoch eine Verknüpfung, mit der das Framework die Werte auflisten und für Sie hinzufügen kann.
Dim list as new List(of string)
...some stuff to fill the list...
Dim observable as new ObservableCollection(of string)(list)
Ich bin spät dran, aber ich möchte dieses interessante Stück teilen, um eine Liste in eine ObservableCollection umzuwandeln, wenn Sie eine Schleife benötigen:
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;
}
Sie können eine Sammlung an den ObservableCollection-Konstruktor übergeben:
List<Product> myProds = ......
ObservableCollection<Product> oc = new ObservableCollection<Product>(myProds);
Jetzt müssen Sie diese in VB.NET übersetzen :)
//Create an observable collection TObservable.
ObservableCollection (TObservable) =new ObservableCollection (TObservable)();
//Convert List items(OldListItems) to collection
OldListItems.ForEach(x => TObservable.Add(x));
um zu klären, was Junior sagt (mit einem hinzugefügten Beispiel, wenn Sie LINQ verwenden, das ein IEnumerable zurückgibt):
//Applications is an Observable Collection of Application in this example
List<Application> filteredApplications =
(Applications.Where( i => i.someBooleanDetail )).ToList();
Applications = new ObservableCollection<Application>( filteredApplications );
Obwohl ich zu spät komme, möchte ich eine kurze Verbesserung der Antwort von Junior geben: Lassen Sie den Entwickler die Konvertierungsfunktion definieren, mit der beobachtbare Sammlungsobjekte aus der Quellensammlung in die Zielsammlung konvertiert werden.
Wie das Folgende:
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;
}
ObservableCollection<yourobjectname> result = new ObservableCollection<yourobjectname>(yourobjectlist);