1        /// <summary>
 2         /// 将属性不同的单元格变红
 3         /// </summary>
 4         /// <param name="datagrid"></param>
 5         public static void ChangeNotEqualCellColor(DataGrid datagrid)
 6         {
 7             for (int i = 0; i < datagrid.Items.Count; i++)
 8             {
 9                 DataRowView row = datagrid.Items[i] as DataRowView;
10                 if (!IsEmptyRow(row))
11                 {
12                     DataRowView nextRow = datagrid.Items[i+1] as DataRowView;
13                     if (!IsEmptyRow(nextRow))
14                     {                   
15                         ChangeColor(datagrid, (DataRowView)datagrid.Items[i], (DataRowView)datagrid.Items[i + 1]);
16                         i++;
17                     }
18                 }
19             }
20         }
21         /// <summary>
22         /// 判断是否为空行
23         /// </summary>
24         /// <param name="row"></param>
25         /// <returns></returns>
26         private static bool IsEmptyRow(DataRowView row)
27         {
28             bool isEmpth = false;
29             foreach (var item in row.Row.ItemArray)
30             {
31                 if (item.ToString() == "")
32                     isEmpth = true;
33                 else
34                     isEmpth = false ;
35             }
36             return isEmpth;
37             //if (row[0].ToString() == "" && row[1].ToString() == "" && row[2].ToString() == "" && row[3].ToString() == "")
38             //    return true;
39             //else
40             //    return false;
41         }
42         /// <summary>
43         /// 两一组两行不同属性单元格变红
44         /// </summary>
45         /// <param name="datagrid"></param>
46         /// <param name="previousRow"></param>
47         /// <param name="nextRow"></param>
48         private static void ChangeColor(DataGrid datagrid, DataRowView previousRow, DataRowView nextRow)
49         {
50             for (int i = 0; i < previousRow.Row.ItemArray.Count(); i++)
51             {
52                 if (previousRow.Row.Table.Columns[i].ColumnName == "图层名称" || previousRow.Row.Table.Columns[i].ColumnName == "CROWID")
53                     continue;
54                 string strpreviousRow = previousRow.Row[i].ToString();
55                 string strnextRow = nextRow.Row[i].ToString();
56                 if (previousRow.Row[i].ToString() != nextRow.Row[i].ToString())
57                 {
58                     TextBlock previousTextBlock = datagrid.Columns[i].GetCellContent(previousRow) as TextBlock;
59                     if(previousTextBlock!=null)
60                     previousTextBlock.Foreground = System.Windows.Media.Brushes.Red;
61                     TextBlock nextTextBlock = datagrid.Columns[i].GetCellContent(nextRow) as TextBlock;
62                     if (nextTextBlock != null)
63                     nextTextBlock.Foreground = System.Windows.Media.Brushes.Red;
64                 }
65             }
66         }

DataGrid调用的刷新事件
        /// <summary>
        /// 页面刷新事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DataGrid_Value_LayoutUpdated(object sender, EventArgs e)
        {
            if (DataGrid_Value.Items.Count > 0)//判断是否有数据
            {
                GUIHelper.ChangeNotEqualCellColor(DataGrid_Value);
            }
        }