zoukankan      html  css  js  c++  java
  • 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             #endregion
    188             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     }
  • 相关阅读:
    用Fiddler模拟低速网络环境
    定制 Fiddler 之将请求发往另一服务器
    软件测试流程进阶----两年软件测试总结
    Fiddler 4 抓包(APP HTTPS )
    JMeter报错 ERROR o.a.j.t.JMeterThread: Test failed!
    Python显示百分比
    python 2 到 3 的新手坑
    Python运行的17个时新手常见错误小结
    Python去除字符串的空格
    js控制媒体查询样式/判断是PC端还是移动端
  • 原文地址:https://www.cnblogs.com/mybluesky99/p/3939570.html
Copyright © 2011-2022 走看看