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);
}
}