我将如何以编程方式以只读方式创建某些DataGrid列?

时间:2013-09-19 18:39:26

标签: c# wpf datagrid

我在使用某些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;在这种情况下,我最终得到一个指数超出范围。好像我调试它时Columns是空的?当我拨打fieldsDataGrid.ItemSource = fields

时,为什么它是空的

如果这是实现此方法的错误方法,请提出更好的选择!

感谢您的帮助!

修改

我添加了XML AutoGeneratedColumns = "true" - 我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:4)

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