1

我有一个需要使用 MVVM 设计 WPF 屏幕的请求。此屏幕有两个 DataGrid。

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

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

例子:

如果第一个 DataGrid 有三行:

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

我需要我的第二个数据网格有这三列:

| Value 1 | Value 2 | Value 3 |

但是,我正在尝试一种不涉及手动将这些列添加到第二个数据网格的方法来实现这一点,因为我相信这会扼杀“MVVM 方式”的做事方式,原因有两个:

  1. 我希望我的视图的代码隐藏文件保持“空”(除了视图构造函数上自动生成的“InitializeCOmponent()”之外,我不能向其中添加任何代码)

  2. 我不能让我的 ViewModel 实际持有对 DataGrid 的引用,因为我相信这会在 View 和 ViewModel 之间建立牢固的联系。

由于这两个原因,有没有人知道一种只涉及绑定的方法(或不违反这两个规则的其他解决方案?)

4

1 回答 1

1
  1. 将 a 绑定DataTablefirstDataGrid。
  2. 然后transpose是DataTable(交换行和列)并将它绑定到secondDataGrid。

在这里,您必须将AutoGeneratedColumnsDataGrid 的属性设置为true.

请看这篇文章来转置一个DataTable。

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

如果您已经将 a 绑定Collection到第一个 DataGrid,则可以定义一个newDataTable 和logically assignedCollection 中的值,然后您也可以将 DataTable 绑定到 DataGrid。

于 2013-04-23T04:08:12.420 回答