我想使用DataGridView
在Windows窗体中显示Dictionary<string, TData>
。导致我这样做的特定用例如下:字典键是表示月份的列名,数据类型是十进制。
因此,在这种情况下,对于每一列,我们都有一个月份和一个对应的十进制数。我希望DataGridView显示月份的列,并执行到字典条目的数据绑定。
显然,还有另一个简单的解决方案:创建一个包含12个属性的视图模型,每个属性的类型为decimal,每个属性对应一个月。创建一个DataGridView,并执行到该视图模型的传统数据绑定,数据源是这样的视图模型对象的列表。
但这很乏味,我们需要创建一堆可以通过使用字典自动化的东西。
我的问题是,列需要基于字典动态创建,数据绑定也必须以这种方式完成。
我在谷歌上搜索了一下,找到了Binding
类,它允许创建绑定,但我不知道如何使用它来将动态创建的列绑定到字典中的条目。
如何才能做到这一点?
2条答案
按热度按时间tez616oj1#
您需要实现
ICustomTypeDescriptor
,这样字典才能在DataGridView
或PropertyGrid
中编辑。选项1 -实施IC自定义类型描述符
您可以实现
ICustomTypeDescriptor
,然后在DataGridView
中编辑字典。您可以使用this实现,但需要做一些小的更改。然后,您可以简单地按以下方式编辑字典:或者,如果您愿意,可以将其设置为
PropertyGrid
的SelectedObject
:实现方法如下:
选项2 -使用数据表
此外,作为一个简单的选项,您可以将
Dictionary
塑造为DataTable
并编辑数据。您可以为此任务创建扩展方法:
并按如下方式使用这些扩展方法:
wztqucjr2#
我将此例程用于VB.net