如果 DataGrid 中的行还未被加载,即 LoadingRow 事件未发生,那么针对此行的 GetCellContent() 是不可能得到东西的,只能为 null。
下面两种语法,只是变相的形式而已。
for (int i = 0; i < dgETL.Items.Count; i++)
{ CheckBox selectCheckBoxInCell = dgETL.Columns[0].GetCellContent(dgETL.Items[i]) as CheckBox; if (selectCheckBoxInCell != null) { selectCheckBoxInCell.IsChecked = cbxOne.IsChecked; } }foreach (var item in dgETL.Items)
{ CheckBox selectCheckBoxInCell = dgETL.Columns[0].GetCellContent(item) as CheckBox; if (selectCheckBoxInCell != null) { selectCheckBoxInCell.IsChecked = cbxOne.IsChecked; } }GridViewRow s = ((GridViewRow)PSFileDataGrid.ItemContainerGenerator.ContainerFromIndex(1));
if (s != null) { Button sb = null; GridViewCellBase j = (from c in s.Cells where c.Column.Name == "uid" select c).FirstOrDefault(); if (j != null) { sb = j.Template.FindName("button1", j) as Button; sb.IsEnabled = false; }}