我有一个请求,我需要使用MVVM设计WPF屏幕。此屏幕有两个DataGrids。
第一个数据网格将绑定到一个集合,数据网格可以在其中添加或删除项目。
现在,棘手的部分是我需要第二个DataGrid从第一个数据网格绑定的集合中的项目自动生成列。
示例:
如果第一个DataGrid有三行:
| Value 1 |
| Value 2 |
| Value 3 |
我需要第二个数据网格来拥有这三列:
| Value 1 | Value 2 | Value 3 |
但是,我正在尝试一种实现此方法的方法,该方法不涉及手动将这些列添加到第二个数据网格,因为我认为这会因为两个原因而杀死“MVVM方式”:< / p>
我希望我的视图的代码隐藏文件保持“空”(除了在视图的构造函数上自动生成的“InitializeCOmponent()”之外,我不能添加任何代码)
我不能让我的ViewModel实际上持有对DataGrid的引用,因为我相信这会创建一个从View到ViewModel的强大联系。
由于这两个原因,有没有人知道这样做的方法只涉及绑定(或其他不破坏这两条规则的解决方案?)
答案 0 :(得分:0)
DataTable
绑定到first
DataGrid。transpose
DataTable(Exchange行和列)并将其绑定到second
DataGrid。在这里,您必须将DataGrid的AutoGeneratedColumns
属性设置为true
。
请查看此article以转置DataTable。
Here是将DataTable
绑定到DataGrid的简单解决方案。
如果您已经将Collection
绑定到第一个DataGrid,则可以从Collection中定义new
DataTable和logically assigned
值,然后您也可以将DataTable绑定到DataGrid