2011-03-31 26 views
2

您好我在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

回答

3

的問題是,當你設置IsReadOnly,列還有待建立。 您需要做的是從創建列後發生的DataGrid中捕獲事件。例如,你可以這樣做:

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

謝謝。但似乎也沒有工作。仍然得到相同的信息。該指數超出界限。 – wardh 2011-03-31 13:17:52

+0

在另一張筆記上,我試圖對您的答案進行投票。但是我沒有足夠的聲望。如果你起來,我可以讓你:) – wardh 2011-03-31 13:25:03

+0

你不能得到MyGrid.Columns,但你可以使用e.Column,因爲我顯示 – 2011-03-31 15:19:39