2011-01-19 17 views
1

これは私の設定です。私は、次てBusinessObjectクラスはDataGridバインディングタイプの問題

BaseClass 
InheritClassA : BaseClass 
InheritClassB : BaseClass 
InheritClassC : BaseClass 

私はまた、次の辞書を持ってい

Dictionary<classType is a String, ObservableCollection<BaseClass>> 
私は、私のコンバータでは、私が選択したオブジェクトの種類のベースは、適切なのObservableCollectionを返すことができるようにしたい

私はそれを私のDataGridにバインドすることができます、そして、私はグリッド上のすべての私のプロパティを見ることができるので、autoGenerateColumnをオンにします。

しかし、コレクションをBaseClassとして戻すと、ベースクラスの列のみが表示されます。 ObservableCollectionの型がbaseClassの型でInheritClassA/InheritClassB/InheritClassCに固有ではないからです。

ObservableCollectionの型を動的に作成する方法はありますか?だから私はObservableCollectionを作成し、それにキャストされた値を割り当てることができますか?

私のデータグリッドにバインドする適切な方法がありますので、継承クラスのプロパティを表示できますか?

おかげで非常に多く、

答えて

1

は値型ObjectなくBaseClassとして持っている辞書を作成します。次に、具体的なObservableCollection<InheritClass[A,B,C]>を追加することができ、結合は、あなたが期待するように動作します:あなたはより限定的なものにしたい

Dictionary<classType is a String, ObservableCollection<object>> 

場合は、Dictionary<string,IEnumerable>

としてそれを宣言する
関連する問題