2011-03-31 1 views
2

こんにちは私はSilverlightのデータグリッドでカラムをロックするのに少し問題があります。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

+0

もう一つのノートで、私はあなたの答えにあなたを投票しようとしました。しかし、私は十分な評判を持っていません。あなたが私の上にいるなら、私はあなたを上げることができます:) – wardh

+0

MyGrid.Columnsを取得することはできませんが、私は示したようにe.Columnを使用できます –

関連する問題