这是我的所作所为:
1.我创建了一个Type T1 并实现了一个接口 I1
2.我使用带有自动生成列的DataGrid和一个List<I1>
作为项目源。
网格生成 I1 的所有列,但 T1 的不!
如果我使用List<object>
作为项目来源的类型,我将获得所有属性。
使用T1的 Bindings 访问属性,同时将其暴露为I1,就像预期的那样工作。另外,添加针对T1 Properties的列也可以。
似乎继承混淆了WPF的类型系统(或者它只是网格吗?)
有什么建议吗?
编辑:此问题与DataGrid AutoGenerates Columns的方式有关。这有点奇怪,这是我必须修改的 我投了一个亲密的投票,只是为了让这篇文章出现在搜索中,但是由于它的DataGrid问题,基本上没有答案。
答案 0 :(得分:0)
如果您希望自动生成列,则应将ItemsSource设置为List<T1>
。这很有道理。想象一下,您有几种实现I1
接口的类型,运行时应该如何确定要生成哪些列?
List<I1>
例如可以包含具有10个公共属性的类型U1
的实例和具有20个公共属性的类型V1
的另一个实例。
有关详细信息,请参阅以下类似问题的答案。
WPF DataGrid build from List<SomeInterface> using AutoGenerateColumns