2014-11-24 108 views
0

假設我在DataGrid中有5列和5行。現在我想在編輯模式下獲取currentRow的所有單元格。我成功地做到了。現在我想禁用除單元格正在編輯的行之外的所有行。但在下面的代碼r.IsEditing永遠不會返回true。有人可以解釋我爲什麼嗎?DataGridRow.IsEditing永不返回true

for (int column = 0; column <= dg.Columns.Count - 1; column++) 
{ 
    if (!(GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsReadOnly)) 
    { 
     GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsEditing = true; 
    } 
} 

foreach (DataGridRow r in rows) 
{ 
    if (!(r.IsEditing)) 
    { 
     r.IsEnabled = false; 
    } 
} 

回答

0

這是有點棘手。我需要下面的行添加到我的代碼,使其工作:

dg.CurrentCell = new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[0]); 
dg.BeginEdit(); 

所以,現在我的完整代碼如下所示:

dg.CurrentCell = new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[0]); 
dg.BeginEdit(); 

for (int column = 0; column <= dg.Columns.Count - 1; column++) 
{ 
    if (!(GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsReadOnly)) 
    { 
     GetDataGridCell(new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column])).IsEditing = true; 
    } 
} 

foreach (DataGridRow r in rows) 
{ 
    if (!(r.IsEditing)) 
    { 
     r.IsEnabled = false; 
    } 
}