我在使某些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
属性。