У меня есть GridView
, извлеченный в отдельном пользовательском элементе управления без собственной модели просмотра или кода. Этот пользовательский элемент управления используется в двух разных представлениях, которые по умолчанию передают свой собственный контекст данных в представление.Общий интерфейс между ObservableCollection и ICollectionView
Думай о нем, как следующее:
управления пользователя
<DataGrid ItemsSource="{Binding Cars}" ... />
Просмотр 1
<LocalViews:CarsGrid />
Вид 1 модельное
...
public ObservableCollection<Cars> Cars { get; }
...
View 2
<LocalViews:CarsGrid />
View 2 в модели
...
public ICollectionView Cars { get; }
...
то есть разница между этими двумя моделями зрения является то, что они обеспечивают сбор, который привязывается к сетке данных по различным типам.
Я хотел извлечь общий интерфейс между двумя моделями просмотра, потому что я не чувствую себя комфортно, не имея никаких требований к (косвенной) модели представления, которая может быть привязана к этому пользовательскому элементу без контроля модели.
Проблема - я не смог найти общий базовый класс или интерфейс между ObservableCollection
и ICollectionView
. Является ли мой подход неправильным?
Не реализовано 'ObservableCollection'. Он реализует его общую версию - 'IEnumerable'. 'ICollectionView' имеет очень странную иерархию ... –
ObservableColletion действительно также реализует не общий интерфейс IEnumerable.Это скомпилируется просто отлично: System.Collections.IEnumerable collecton = new ObservableCollection (); Попробуйте сами, и вы увидите :) –
mm8
IEnumerable должен быть (только) общим интерфейсом, который вы ищете здесь. – mm8