我目前正在尝试找出填写数据网格列的最佳方法。网格将显示为这样,其中标题表示月份的日期,行表示某种类型的分组。
1 | 2 | 3 | 4
Foo 0 5 1 3
Bar 1 1 0 3
Foo2 3 9 7 6
Bar2 9 8 6 5
这意味着在第1天(无论什么月份),Bar2中有9个。我已经将所有数据排序并准备好了。但是,我无法想出一个动态添加月份日期作为列的好方法。我添加了如何使用绑定来执行此操作,因为所有数据都在我的视图模型中,并且我并不打算使用后面的代码添加列(当然,除非绝对必要)。
此外,这不需要使用数据网格,因为此报告纯粹用于统计,永远不会被修改。
我还会考虑接受一个可以替代使用数据网格的答案。
答案 0 :(得分:4)
对于要动态生成的报表式数据,DataTable
适用于DataGrid
。例如,使用此XAML:
<Grid>
<DataGrid ItemsSource="{Binding}"/>
</Grid>
这个代码背后:
var table = new DataTable();
table.Columns.Add(new DataColumn("Name"));
table.Columns.AddRange(Enumerable.Range(1, 4).Select(i => new DataColumn(i.ToString())).ToArray());
DataRow row = table.NewRow();
row[0] = "Foo";
row[1] = 0;
row[2] = 5;
row[3] = 1;
row[4] = 3;
table.Rows.Add(row);
DataContext = table;
我们得到了这个结果:
答案 1 :(得分:2)
这个问题让我想起了this
我认为您可以使用相同的ICustomTypeDescriptor
方法来提供所需的列/属性
另一方面......如果仅仅是为了一些蹩脚的报道,Rick Sladkey的解决方案看起来像“少代码”=&gt;更容易,更快地实施