无法在silverlight中使列只读

时间:2011-03-31 08:59:20

标签: silverlight datagrid

嗨,我在Silverlight的数据网格中锁定我的列有点麻烦。

void proxy_ListAllGroupsCompleted(object sender, gkws.ListAllGroupsCompletedEventArgs e)
    {
        grouplist = e.Result;

        List<allGroups> source = new List<allGroups>();


        for (int i = 0; i < grouplist[0].Count; i++)
        {
            source.Add(new allGroups()
            {

                ID = Convert.ToInt32(grouplist[0][i]),
                Name = grouplist[1][i],
                CreationDate = grouplist[2][i],
                Creator = grouplist[3][i]
            });
        }

        mainGroupDG.ItemsSource = source;

        mainGroupDG.Columns[0].IsReadOnly = true;
        mainGroupDG.Columns[2].IsReadOnly = true;
        mainGroupDG.Columns[3].IsReadOnly = true;
    }

当我调试时,我收到错误“索引超出范围”。虽然我的数据网格在尝试锁定之前会自动生成列。

感谢您的帮助。

Wardh

1 个答案:

答案 0 :(得分:3)

问题是,当您设置IsReadOnly时,尚未创建列。 您需要做的是从DataGrid中捕获在创建列之后发生的事件。例如,你可以这样做:

    private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        e.Column.IsReadOnly = true;
    }