我正在寻找一种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从数据库中获得了一个实例列表 - 到目前为止一切都很好。 - 我想在. _
ADataGrid - 当用户从列表中选择另一个项目(意思是另一种类型,可以说
B)时,我从数据库中获得一个B实例列表,并且需要在网格中显示这些实例等等......
插件 DLL 是一个没有 xamls 的类库(我的用户也是制作这个插件的人,我不希望他们必须
DataTemplate为他们的实体编写 s。我也不能DataTemplate像我一样制作 predifned直到运行时我才知道需要显示的类型。每种类型都可以有不同的类型和数量的属性。我在编译时所知道的是它们都派生自Entity.- 网格也应该是可编辑的。