【问题标题】:WPF MVVM Dynamically bind datagrid columns to collectionWPF MVVM 将数据网格列动态绑定到集合
【发布时间】:2013-04-15 23:52:53
【问题描述】:

我有一个需要使用 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 之间建立牢固的联系。

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

【问题讨论】:

标签: wpf mvvm wpfdatagrid


【解决方案1】:
  1. DataTable 绑定到first DataGrid。
  2. 然后transpose DataTable(交换行和列)并将其绑定到second DataGrid。

这里你必须将DataGrid的AutoGeneratedColumns属性设置为true

请查看article 转置数据表。

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

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

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多