您将如何绑定(bind)一个WPF数据网格,该数据网格需要显示来自许多不同数据源的数据,这些数据源具有不同的列数和不同的列标题和类型?

我目前正在做的是在ViewModel中为要在此DataGrid中显示的每个不同记录集创建一个自定义的List<DataGridColumn>()数据网格列列表。

我遍历此列表以设置DataGrid列:

foreach (DataGridColumn dgc in dgcSample)
{
  dgc.HeaderStyle = hStyle;
  dgMyDataGrid.Columns.Add(dgc);
}

最后,我使用ItemsSource设置项目的来源:
dgMyDataGrid.ItemsSource = SomeCollection;

这有效,但没有约束力,并且打破了MVVM准则,即ViewModel必须与特定的UI元素无关,因为它现在必须处理DataGrid并托管DataGridColumn对象的集合...

有什么想法吗?

最佳答案

您是否考虑过使用http://www.codeproject.com/KB/grid/MultiColumnSetDataGrid.aspx中显示的datagrid派生类

这将允许您在 View 中定义多个列集并在它们之间切换。

08-05 13:23