我在使某些datagrid列为只读时遇到麻烦。

XML格式

<DataGrid x:Name="fieldsDataGrid" AutoGenerateColumns="true"></DataGrid>


C#代码

List<Field> fields = TestingClass.generateTestFields() // Generates the list
fieldsDataGrid.ItemSource = fields;

// I tried both ways
FieldsDataGrid.Columns[0].isReadOnly = true;
FieldsDataGrid.Columns["Tokens"].isReadOnly = true; // Tokens is the column name


我曾想过的
FieldsDataGrid.Columns[0].isReadOnly = true;在这种情况下,我最终得到的索引超出范围。似乎在我调试它时,列为空?为什么我叫fieldsDataGrid.ItemSource = fields时它是空的

如果这是错误的实现方式,请提出一个更好的选择!

感谢您的帮助!

编辑

我已经在XML AutoGeneratedColumns = "true"中添加了-我仍然遇到相同的错误。

最佳答案

如果要自动生成列,请使用AutoGeneratingColumn事件并在那里设置列的readonly属性。如果要手动添加列,则应在创建时直接通过列名称访问IsReadOnly属性。

08-06 15:03