DataGridコンパイル時に不明な型からデータを表示する方法を探しています。
次の基本クラスがあります
public abstract class Entity
{
// Some implementation of methods ...
}
実行時に、プラグイン DLL をロードし、リフレクションを使用して から派生したすべての型のリストを取得しますEntity。例えば:
public class A : Entity
{
public LocalAddress Address{ get; set; }
}
public class B : Entity
{
public Vendor Vendor { get; set; }
public string Name { get; set; }
}
次に、DB からインスタンスのリストを取得します
public IEnumerable<Entity> Entities { get; set; } // A list of instances of type A for example
Entitiesは DataGrid のですItemsSourceが、プロパティを にバインドできる最善の方法はDataGrid何ですか? プロパティは複雑になる可能性があるため、特定のパスにバインドできる必要もあります。たとえばAddress.HomeNum...
明確化
一度に 1 つの型のインスタンスの 1 つのグリッドを表示するだけで済みます。完全なシナリオは次のとおりです。
Entityリフレクションによってプラグイン DLL から派生した型のリストを取得し ます- リストに名前を表示します。(この例では、リストには
AとB - ユーザーが特定のアイテムをクリックすると、たとえば、DB からインスタンス
Aのリストを取得しAます。これまでのところ、問題ありません。 - のインスタンスのリストを
ADataGrid. - ユーザーがリストから別のアイテムを選択すると (別のタイプを意味します
B)、DB から のインスタンスのリストを取得し、Bそれらをグリッドなどに表示する必要があります ...
プラグイン DLL は、xaml のないクラス ライブラリです (また、私のユーザーはこのプラグインを作成しているので
DataTemplate、エンティティの sDataTemplateを書く必要はありません。実行時まで表示する必要があるタイプがわからない. 各タイプは異なるタイプとプロパティの量を持つことができる. コンパイル時に私が知っているのは、それらがすべてEntity.- グリッドも編集可能である必要があります。