2012-04-12 68 views
3

我有一个有大约30个属性的对象,具体取决于谁在查看数据,我只需要向他提供10-12个属性。 这些属性将形成WPF数据网格的列。我正在使用.Net 4.0 但是,所有这些都会在运行时发生。我需要这样做是MVVM的方式。 任何方向如何实现这一点将不胜感激。WPF DataGrid中的动态列生成

问候,

回答

0

就我所见,您有两种选择。

1)从您的ViewModel中公开一个ViewableDetailsType enum属性,告诉您应该显示哪种数据视图。在视图中,您可以在DataGrid中创建触发器,将网格的Columns属性设置为手动显示适当的列。

2)更好的方法是为您的基础模型对象创建包装,DTO类型的ViewModel对象。一个用于要展示的对象的每个视图。然后将适当的包装器对象的集合公开给视图,并且DataGrid可以使用自动列。

这是稍微多一点的工作,但它更真实的MVVM,因为数据隐藏发生在ViewModel中,因此可以进行测试。