我正在寻找一种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; }
}
然后我从数据库中检索他们的实例列表
public IEnumerable<Entity> Entities { get; set; } // A list of instances of type A for example
Entities
是 DataGrid 的ItemsSource
,但是我可以将属性绑定到的最佳方法是DataGrid
什么?由于属性可能很复杂,我还需要能够绑定到特定路径,例如Address.HomeNum
...
澄清
我一次只需要显示一个类型实例的一个网格。完整的场景是这样的:
Entity
我通过反射获得了从插件 DLL派生的类型列表- 我在列表中显示他们的名字。(在此示例中,该列表将包含
A
和B
- 当用户单击特定项目时,比如说
A
,我A
从数据库中获得了一个实例列表 - 到目前为止一切都很好。 - 我想在. _
A
DataGrid
- 当用户从列表中选择另一个项目(意思是另一种类型,可以说
B
)时,我从数据库中获得一个B
实例列表,并且需要在网格中显示这些实例等等......
插件 DLL 是一个没有 xamls 的类库(我的用户也是制作这个插件的人,我不希望他们必须
DataTemplate
为他们的实体编写 s。我也不能DataTemplate
像我一样制作 predifned直到运行时我才知道需要显示的类型。每种类型都可以有不同的类型和数量的属性。我在编译时所知道的是它们都派生自Entity
.- 网格也应该是可编辑的。