2016-07-06 7 views
0

DataGridのソースとして使用されているオブジェクトの一覧があります。このオブジェクトのリストは、継承された型が2つ以上ある基本クラス型です。私はDataGridの列に値として表示するために基本クラスのプロパティにバインドしようとしています。サブクラスには、表示できるようにするさまざまなプロパティが用意されています。そのため、XAMLには、指し示されている型に基づいてバインディングの値を動的に変更する方法がありますか?私は潜在的にコンバータでこれを行うことを考えましたが、私が正しく理解していれば、私はバインドする必要がある各サブクラスのプロパティごとに異なるコンバータを記述する必要があります。アドバイスや提案は高く評価されます。ありがとうタイプに基づいてXAMLバインディングを動的に変更します。

答えて

0

おそらく属性といくつかのリフレクションで、さまざまな列に入り、それらを自動生成するプロパティをマークすることができます。すべての可能なプロパティの列を含む疎なグリッドを作成することもできます。リフレクションによっても可能であり、追加のメタデータを必要としません。

(ネイティブDataGridイベントが、このためには十分ではない場合は、添付プロパティ(like this)を使用してアイテムに基づいて列を自動作成することができます。)

0

あなたが複数DataTemplatesを定義して所期のタイプを指定することができますDataTypeプロパティバインドされたオブジェクトのタイプに応じて、正しいテンプレートが選択されます。これを達成するための

https://msdn.microsoft.com/en-us/library/system.windows.datatemplate.datatype(v=vs.110).aspx

+0

これは、列を持つDataGridに関するものでない場合は、これを行うのが好ましい方法です。 –

+0

これは、DataGridが本当に必要なコントロールではないことを意味しています。あなたはListBoxとテンプレートだけで簡単に見えるようにすることができます。バインドされた型に対して、それぞれの "行"が表示されます。 –

+0

おそらく。 –

0

手段はCellTemplateSelectorだろう。 これを参照してくださいlink

関連する問題