首页 > 代码库 > Silverlight日记:动态操作Grid
Silverlight日记:动态操作Grid
一,动态生成Grid
1 public static Grid CreateGrid(List<T_METER> List) 2 { 3 var g = new Grid(); 4 if (null == List) return g; 5 g.HorizontalAlignment = HorizontalAlignment.Stretch; 6 g.VerticalAlignment = VerticalAlignment.Bottom; 7 var meters = List.OrderBy(i => (string.IsNullOrEmpty(i.F_ORDER_NO) ? 0 : Convert.ToInt32(i.F_ORDER_NO))); 8 var count = meters.Count(); 9 var sdr = List.FirstOrDefault(i => i.F_EQT_TYPE.ToUpper().Equals("C")); 10 var exteneral = List.FirstOrDefault(i => i.F_EQT_TYPE.ToUpper().Equals("E")); 11 #region 生成列 12 for (int i = 0; i < 11; i++) 13 { 14 var rd = new RowDefinition(); 15 if (i == 0) 16 rd.Height = new GridLength(440); 17 else 18 rd.Height = new GridLength(30); 19 g.RowDefinitions.Add(rd); 20 } 21 for (int i = 0; i < count; i++) 22 { 23 var cd = new ColumnDefinition(); 24 if (i == 0) 25 cd.Width = new GridLength(120); 26 else if (i == 1) 27 { 28 if (sdr != null) 29 cd.Width = new GridLength(150); 30 else 31 cd.Width = new GridLength(90); 32 } 33 else if (i == 2) 34 { 35 if (exteneral != null) 36 cd.Width = new GridLength(98); 37 else 38 cd.Width = new GridLength(71); 39 } 40 else 41 cd.Width = new GridLength(71); 42 g.ColumnDefinitions.Add(cd); 43 } 44 #endregion 45 46 #region 数据绑定 47 for (int i = 0; i < count; i++) 48 { 49 50 var meter = meters.ElementAt(i); 51 var namepath = string.Format("Objs[{0}].MeterName", i); 52 var statepath = string.Format("Objs[{0}].SwitchState.Value", i); 53 if (meter.F_EQT_TYPE.Equals("D")) 54 { 55 var tranLeft = new TranLeft(); 56 tranLeft.SetBinding(TranLeft.MeterNameProperty, new Binding(namepath)); 57 tranLeft.SetBinding(TranLeft.SwitchStateProperty, new Binding(statepath)); 58 tranLeft.SetValue(Grid.RowProperty, 0); 59 tranLeft.SetValue(Grid.ColumnProperty, i); 60 tranLeft.Width = 120; 61 g.Children.Add(tranLeft); 62 } 63 else if (meter.F_EQT_TYPE.Equals("B")) 64 { 65 var tran1 = new Tran1(); 66 tran1.SetBinding(Tran1.MeterNameProperty, new Binding(namepath)); 67 tran1.SetBinding(Tran1.SwitchStateProperty, new Binding(statepath)); 68 tran1.SetValue(Grid.RowProperty, 0); 69 tran1.SetValue(Grid.ColumnProperty, i); 70 tran1.Width = 90; 71 g.Children.Add(tran1); 72 } 73 else if (meter.F_EQT_TYPE.Equals("C")) 74 { 75 var tran2 = new Tran2(); 76 tran2.SetBinding(Tran2.MeterNameProperty, new Binding(namepath)); 77 tran2.SetBinding(Tran2.SwitchStateProperty, new Binding(statepath)); 78 tran2.SetValue(Grid.RowProperty, 0); 79 tran2.SetValue(Grid.ColumnProperty, i); 80 tran2.Width = 150; 81 g.Children.Add(tran2); 82 } 83 else if (meter.F_EQT_TYPE.Equals("E")) 84 { 85 var external = new External(); 86 external.SetBinding(External.MeterNameProperty, new Binding(namepath)); 87 external.SetBinding(External.SwitchStateProperty, new Binding(statepath)); 88 external.SetValue(Grid.RowProperty, 0); 89 external.SetValue(Grid.ColumnProperty, i); 90 external.Width = 98; 91 g.Children.Add(external); 92 } 93 else 94 { 95 var m = new Meter(); 96 m.SetBinding(Meter.MeterNameProperty, new Binding(namepath)); 97 m.SetBinding(Meter.SwitchStateProperty, new Binding(statepath)); 98 m.SetValue(Grid.RowProperty, 0); 99 m.SetValue(Grid.ColumnProperty, i);100 g.Children.Add(m);101 }102 103 var uaCell = new CustomCell();104 uaCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].FUA.Value", i)));105 uaCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].FUA.IsAlarm", i)));106 uaCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].FUA.IsButton", i)));107 uaCell.SetValue(Grid.RowProperty, 1);108 uaCell.SetValue(Grid.ColumnProperty, i);109 g.Children.Add(uaCell);110 111 var ubCell = new CustomCell();112 ubCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].FUB.Value", i)));113 ubCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].FUB.IsAlarm", i)));114 ubCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].FUB.IsButton", i)));115 ubCell.SetValue(Grid.RowProperty, 2);116 ubCell.SetValue(Grid.ColumnProperty, i);117 g.Children.Add(ubCell);118 119 var ucCell = new CustomCell();120 ucCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].FUC.Value", i)));121 ucCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].FUC.IsAlarm", i)));122 ucCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].FUC.IsButton", i)));123 ucCell.SetValue(Grid.RowProperty, 3);124 ucCell.SetValue(Grid.ColumnProperty, i);125 g.Children.Add(ucCell);126 127 128 var iaCell = new CustomCell();129 iaCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].FIA.Value", i)));130 iaCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].FIA.IsAlarm", i)));131 iaCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].FIA.IsButton", i)));132 iaCell.SetValue(Grid.RowProperty, 4);133 iaCell.SetValue(Grid.ColumnProperty, i);134 g.Children.Add(iaCell);135 136 var ibCell = new CustomCell();137 ibCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].FIB.Value", i)));138 ibCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].FIB.IsAlarm", i)));139 ibCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].FIB.IsButton", i)));140 ibCell.SetValue(Grid.RowProperty, 5);141 ibCell.SetValue(Grid.ColumnProperty, i);142 g.Children.Add(ibCell);143 144 var icCell = new CustomCell();145 icCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].FIC.Value", i)));146 icCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].FIC.IsAlarm", i)));147 icCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].FIC.IsButton", i)));148 icCell.SetValue(Grid.RowProperty, 6);149 icCell.SetValue(Grid.ColumnProperty, i);150 g.Children.Add(icCell);151 152 var alarmTypeCell = new CustomCell();153 alarmTypeCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].AlarmType.Value", i)));154 alarmTypeCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].AlarmType.IsAlarm", i)));155 alarmTypeCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].AlarmType.IsButton", i)));156 alarmTypeCell.SetValue(Grid.RowProperty, 7);157 alarmTypeCell.SetValue(Grid.ColumnProperty, i);158 g.Children.Add(alarmTypeCell);159 160 161 var meterAlarmCell = new CustomCell();162 meterAlarmCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].MeterAlarm.Value", i)));163 meterAlarmCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].MeterAlarm.IsAlarm", i)));164 meterAlarmCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].MeterAlarm.IsButton", i)));165 meterAlarmCell.SetValue(Grid.RowProperty, 8);166 meterAlarmCell.SetValue(Grid.ColumnProperty, i);167 g.Children.Add(meterAlarmCell);168 169 var powerCell = new CustomCell();170 powerCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].Power.Value", i)));171 powerCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].Power.IsAlarm", i)));172 powerCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].Power.IsButton", i)));173 powerCell.SetValue(Grid.RowProperty, 9);174 powerCell.SetValue(Grid.ColumnProperty, i);175 g.Children.Add(powerCell);176 177 var trendCell = new CustomCell();178 trendCell.SetBinding(CustomCell.ValueProperty, new Binding(string.Format("Objs[{0}].Trend.Value", i)));179 trendCell.SetBinding(CustomCell.IsAlarmProperty, new Binding(string.Format("Objs[{0}].Trend.IsAlarm", i)));180 trendCell.SetBinding(CustomCell.IsButtonProperty, new Binding(string.Format("Objs[{0}].Trend.IsButton", i)));181 trendCell.SetBinding(CustomCell.BuildIdProperty, new Binding(string.Format("Objs[{0}].BuildId", i)));182 trendCell.SetBinding(CustomCell.MeterIdProperty, new Binding(string.Format("Objs[{0}].MeterId", i)));183 trendCell.SetValue(Grid.RowProperty, 10);184 trendCell.SetValue(Grid.ColumnProperty, i);185 g.Children.Add(trendCell);186 }187 #endregion188 GridHelper.ShowBorder(g);189 return g;190 }
二,Grid边框操作
1 public class GridHelper 2 { 3 ////A0B3C6 4 public static SolidColorBrush _BorderBrush = new SolidColorBrush(ConvertFromString("#FFA0B3C6")); 5 public static double _BorderThickness = 1; 6 7 /// <summary> 8 /// 生成边框 9 /// </summary> 10 public static void ShowBorder(Grid gd) 11 { 12 if (gd == null) 13 { 14 return; 15 } 16 17 clearBorder(gd); 18 19 SolidColorBrush BorderColorBrush = _BorderBrush; 20 double BorderThickness = _BorderThickness; 21 22 CreateBorder(gd, BorderColorBrush, BorderThickness); 23 24 } 25 26 /// <summary> 27 /// 生成边框 28 /// </summary> 29 public static void ShowBorder(Grid gd, SolidColorBrush BorderColorBrush, double BorderThickness) 30 { 31 if (gd == null) 32 { 33 return; 34 } 35 36 clearBorder(gd); 37 38 CreateBorder(gd, BorderColorBrush, BorderThickness); 39 40 } 41 42 private static void clearBorder(Grid gd) 43 { 44 for (int i = gd.Children.Count - 1; i >= 0; i--) 45 { 46 if (gd.Children[i].ToString() == "System.Windows.Controls.Border") 47 { 48 Border re = gd.Children[i] as Border; 49 if (re.Tag == "autoBorder") 50 { 51 gd.Children.RemoveAt(i); 52 } 53 } 54 } 55 56 } 57 58 private static void CreateBorder(Grid gd, SolidColorBrush BorderBrush, double BorderThickness) 59 { 60 for (int i = 0; i < gd.RowDefinitions.Count; i++) 61 { 62 for (int j = 0; j < gd.ColumnDefinitions.Count; j++) 63 { 64 Border boIn = new Border(); 65 66 boIn.BorderBrush = BorderBrush; 67 if (i == 0) 68 { 69 boIn.BorderThickness = new Thickness(0, 0, 0, BorderThickness); 70 } 71 else 72 { 73 if (j == 0) 74 boIn.BorderThickness = new Thickness(BorderThickness, 0, BorderThickness, BorderThickness); 75 else 76 boIn.BorderThickness = new Thickness(0, 0, BorderThickness, BorderThickness); 77 } 78 boIn.SetValue(Grid.ColumnProperty, j); 79 boIn.SetValue(Grid.RowProperty, i); 80 boIn.Tag = "autoBorder"; 81 gd.Children.Add(boIn); 82 } 83 } 84 } 85 86 87 public static Color ConvertFromString(string htmlColor) 88 { 89 htmlColor = htmlColor.Replace("#", ""); 90 byte a = 0xff, r = 0, g = 0, b = 0; 91 switch (htmlColor.Length) 92 { 93 case 3: 94 r = byte.Parse(htmlColor.Substring(0, 1), System.Globalization.NumberStyles.HexNumber); 95 g = byte.Parse(htmlColor.Substring(1, 1), System.Globalization.NumberStyles.HexNumber); 96 b = byte.Parse(htmlColor.Substring(2, 1), System.Globalization.NumberStyles.HexNumber); 97 break; 98 case 4: 99 a = byte.Parse(htmlColor.Substring(0, 1), System.Globalization.NumberStyles.HexNumber);100 r = byte.Parse(htmlColor.Substring(1, 1), System.Globalization.NumberStyles.HexNumber);101 g = byte.Parse(htmlColor.Substring(2, 1), System.Globalization.NumberStyles.HexNumber);102 b = byte.Parse(htmlColor.Substring(3, 1), System.Globalization.NumberStyles.HexNumber);103 break;104 case 6:105 r = byte.Parse(htmlColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);106 g = byte.Parse(htmlColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);107 b = byte.Parse(htmlColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);108 break;109 case 8:110 a = byte.Parse(htmlColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);111 r = byte.Parse(htmlColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);112 g = byte.Parse(htmlColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);113 b = byte.Parse(htmlColor.Substring(6, 2), System.Globalization.NumberStyles.HexNumber);114 break;115 }116 return Color.FromArgb(a, r, g, b);117 }118 119 }
Silverlight日记:动态操作Grid
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。