datagrid 自定义表格,如果出现列表的列数不确定,则会出现,不知道绑定字段名称的问题。这样的话,就使用动态类来定义属性,每加一个列就增加一个属性,使用唯一标识属性名称,绑定的时候就是用此属性名称来绑定。首先定义模板
此类未自定义列的类型,抽象函数必须实现,但真正用到的是 GenerateElement 方法。里面重新定义binding信息和content内容
在界面resource 资源中定义资源,即列要加载的样式,如果是绑定行row 中的内容则需要使用datecontext,如果只是单元格中的内容直接使用banding即可。
后台代码需要先加载datagrid 对象,之后创建自定义的列,每加一列就新增一个实例,并将binding的字段赋值到列,这样列和绑定的字段都有了,余下只要构建数据源即可。由于数据源字段不确定,所以使用动态类。
动态类属性也可以使用复杂类型
这样就可以了,如果出现datagrid 滚动滚动条时数据混乱的话,使用 Binding="{Binding Rank, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"类似方式给UpdateSourceTrigger赋值,
另一种情况是,在定义列的代码中给datacontext赋值了,此处dataItem 不是新值,而是旧值,如果绑定了就会出现cell单元格数据混乱