8

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 つの型のインスタンスの 1 つのグリッドを表示するだけで済みます。完全なシナリオは次のとおりです。

    1. Entityリフレクションによってプラグイン DLL から派生した型のリストを取得し ます
    2. リストに名前を表示します。(この例では、リストにはAB
    3. ユーザーが特定のアイテムをクリックすると、たとえば、DB からインスタンスAのリストを取得しAます。これまでのところ、問題ありません。
    4. のインスタンスのリストADataGrid.
    5. ユーザーがリストから別のアイテムを選択すると (別のタイプを意味しますB)、DB から のインスタンスのリストを取得し、Bそれらをグリッドなどに表示する必要があります ...
  2. プラグイン DLL は、xaml のないクラス ライブラリです (また、私のユーザーはこのプラグインを作成しているのでDataTemplate、エンティティの sDataTemplateを書く必要はありません。実行時まで表示する必要があるタイプがわからない. 各タイプは異なるタイプとプロパティの量を持つことができる. コンパイル時に私が知っているのは、それらがすべてEntity.

  3. グリッドも編集可能である必要があります。
4

3 に答える 3