嗨,我在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
答案 0 :(得分:3)
问题是,当您设置IsReadOnly时,尚未创建列。 您需要做的是从DataGrid中捕获在创建列之后发生的事件。例如,你可以这样做:
private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
e.Column.IsReadOnly = true;
}