個別のユーザーコントロールで個別のビューモデルまたはコードビハインドを持たずにGridView
を抽出しました。このユーザーコントロールは2つの異なるビューで使用され、デフォルトでは独自のデータコンテキストをビューに渡します。ObservableCollectionとICollectionViewの間の共通インターフェイス
ユーザーコントロール
<DataGrid ItemsSource="{Binding Cars}" ... />
ビュー1
<LocalViews:CarsGrid />
ビュー1のモデル
...
public ObservableCollection<Cars> Cars { get; }
...
次のようにそれの
考えます
ビュー2
<LocalViews:CarsGrid />
ビュー2のモデル
...
public ICollectionView Cars { get; }
...
2つのビューモデルの間、すなわち違いは、さまざまな種類の下でデータグリッドにバインドされたコレクションを提供していることです。
このビューモデルレスのユーザーコントロールにバインドできる(間接的な)ビューモデルに対する要件がないと気にしないので、2つのビューモデル間で共通のインターフェイスを抽出したいと考えました。
問題は - ObservableCollection
とICollectionView
の間に共通の基本クラスまたはインターフェイスが見つかりませんでした。私のアプローチは間違っていますか?
ObservableCollectionによって実装されていません。それはそれのジェネリック版を実装しています - 'IEnumerable'。 ICollectionViewは非常に奇妙な階層を持っています... –
ObservableColletionは確かにジェネリックでないIEnumerableインターフェイスも実装しています。これはうまくコンパイルされます:System.Collections.IEnumerable collecton = new ObservableCollection ();あなた自身のためにそれを試してみてください:) –
mm8
IEnumerableはあなたがここで探している(唯一の)共通のインターフェイスでなければなりません。 – mm8