我正在尝试创建一个 DataGridTableStyle 对象,以便我可以控制 DataGrid 的列宽。我创建了一个绑定到列表的 BindingSource 对象。实际上,它绑定到通过 Linq 以下列方式创建的匿名类型列表(为了清楚我在做什么而更改了变量名称):
List<myType> myList = new List<myType>(someCapacity);
.
...populate the list with query from database...
.
var query = from i in myList
select new
{
i.FieldA,
i.FieldB,
i.FieldC
};
myBindingSource.DataSource = query;
myDataGrid.DataSource = myBindingSource;
然后我创建一个 DataGridTableStyle 对象并将其添加到数据网格中。但是,它永远不会应用我设置的表格样式属性,因为我似乎无法设置正确的 myDataGridTableStyle.MappingName 属性。
我已经在 Google 上搜索了大约 1/2 小时,并且在一堆不同的论坛中不断看到指向同一个问题的链接(字面意思是相同的文本,就像有人刚刚复制并粘贴了这个问题......我讨厌那个......) . 无论如何,这些建议都不起作用,就像那个人在所有其他网站上所说的那样。
那么这里有人知道我需要将 MappingName 属性设置为什么才能让我的 TableStyle 真正正常工作吗?我可以从哪里获取名字?(它不能为空...仅适用于绑定到 DataTable 或 SqlCeResultSet 等的 BindingSource)。
我认为这可能是我使用 Linq 创建匿名、更专业版本的对象的问题,其中仅包含我需要的字段。我应该尝试将 BindingSource 直接绑定到 List 对象吗?或者甚至可能将 DataGrid 直接绑定到 List 对象并完全跳过绑定源。
谢谢
PS - C#,紧凑框架 v3.5
更新:
我在下面发布了一个答案,解决了我的问题。不管这是否是最好的方法,它确实奏效了。如果您遇到与我相同的问题,值得一看。