您将如何绑定(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 中定义多个列集并在它们之间切换。