Я бы посоветовал вам конвертировать коллекцию, используя:
var viewModelCollection = new ObservableCollection<ViewModel>(modelCollection.Cast<ViewModel>());
Если вам нравятся расширения, вы можете определить что-то вроде (чтобы избежать нового в предыдущем коде):
public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> coll)
{
return new ObservableCollection<T>(coll);
}
Или, может быть, сделать все за один выстрел:
public static ObservableCollection<TNew> CastObservable<TNew,TOld>(this ObservableCollection<TOld> originalColl)
{
return new ObservableCollection<TNew>(originalColl.Cast<TNew>());
}
Очевидно, что все предыдущие коды будут работать, если вы определили фрагмент # 2