【发布时间】:2011-06-06 20:16:33
【问题描述】:
我想在数据网格中显示数据,其中数据是一个集合
public class Thing
{
public string Foo { get; set; }
public string Bar { get; set; }
public List<Candidate> Candidates { get; set; }
}
public class Candidate
{
public string FirstName { get; set; }
public string LastName { get; set; }
...
}
候选人列表中候选人的数量在运行时变化。
所需的网格布局如下所示
Foo | Bar | Candidate 1 | Candidate 2 | ... | Candidate N
我希望每个候选人都有一个DataTemplate,因为我计划在运行时更改它 - 用户可以选择在不同列中显示有关候选人的哪些信息(候选人只是一个示例,我有不同的对象)。这意味着我还想在运行时更改列模板,尽管这可以通过一个大模板并折叠其部分来实现。
我知道实现目标的两种方法(两者都非常相似):
- 使用
AutoGeneratingColumn事件并创建候选人列 - 手动添加列
在这两种情况下,我都需要从带有XamlReader 的字符串中加载DataTemplate。在此之前,我必须编辑字符串以将绑定更改为想要的 Candidate。
有没有更好的方法来创建一个 DataGridTemplateColumn 数量未知的 DataGrid?
注意:本题基于dynamic datatemplate with valueconverter
编辑:因为我需要同时支持 WPF 和 Silverlight,所以我创建了自己的 DataGrid 组件,其中包含 DependencyProperty 用于绑定列集合。当集合发生变化时,我会更新列。
【问题讨论】:
-
你有没有得到这个问题的解决方案或答案?
-
并非如此。正如我所写,我最终得到了自定义
DataGrid控件。但我正在考虑开发一个仅基于Grid的自定义控件,因为DataGrid对我的任务来说非常繁重。
标签: wpf silverlight datagrid datatemplate datagridtemplatecolumn