WPF MVVM将datagrid列动态绑定到集合

问题描述:

我有一个请求,我需要使用MVVM设计WPF屏幕。该屏幕有两个DataGrid。WPF MVVM将datagrid列动态绑定到集合

第一个数据网格将被绑定到一个集合,其中的数据网格将能够添加或删除它的项目。

现在,棘手的部分是,我需要第二个DataGrid从第一个数据网格绑定到的集合中的项自动生成其列。

例子:

如果第一个DataGrid有三条线:

| Value 1 | 
| Value 2 | 
| Value 3 | 

我需要我的第二个DataGrid有那些三列:

| Value 1 | Value 2 | Value 3 | 

不过,我想想想一种实现这种方式的方法,不需要手动将这些列添加到第二个数据网格中,因为我相信这会杀死“MVVM”做事的原因有两个原因:

  1. 我想要的代码隐藏文件我的观点,继续保持“空”(我不能任意代码添加到其他比对图的构造函数中自动生成“的InitializeComponent()”)

  2. 我不能让我的ViewModel实际上持有对DataGrid的引用,因为我相信这将创建从View到ViewModel的强大纽带。

因为这两个原因,没有人知道这样做只涉及绑定的方式(或其他解决方案,不打破这些两个规则?)

+1

可能重复? http://*.com/questions/4367264/prism-mvvm-binding-columns-to-datagrid – ChrisO 2013-04-22 23:01:56

  1. 绑定DataTablefirst数据网格。
  2. 然后transpose DataTable(交换行和列)并将其绑定到second DataGrid。

在这里,您必须将DataGrid的AutoGeneratedColumns属性设置为true。请参阅article转置DataTable。

Here是将DataTable绑定到DataGrid的简单解决方案。

如果您已经将Collection绑定到第一个DataGrid,您可以从集合中定义new DataTable和logically assigned值,然后您也可以将DataTable绑定到DataGrid。