通用 WPF DataGrid MVVM

Generic WPF DataGrid MVVM

是否可以在 WPF 中为不同的项目源提供具有一些通用功能的数据网格?我们能否在可以接受任何可观察值的控件中使用 Datagrid collection。有没有一种方法可以传递列信息或定义列模板以仅显示某些列及其 header 和绑定传递给包含 Datagrid 的控件?其他功能如添加。删除、排序、点击将使用 Commnds,并且对所有 itemSources 都是通用的。唯一的障碍是我可以为这个 Datagrid 定义列的方式?如果可以将 Datagrid.Columns 作为模板或任何其他方式传递给控件。

您需要处理 DataGrid.AutoGeneratingColumn 事件,然后根据需要设置列的可见性 属性:https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.datagrid.autogeneratingcolumn?view=net-5.0

您将数据写入 DataTable 并将 table 传递给 DataGrid.ItemsSource。 对于简单数据(int、double、string 等)这就足够了。