public static void TryStuff(int aFieldId) { CommonData dataField = null; switch (aFieldId) { case (0): dataField = new GPSData(); dataField.CommonStuff = "abcd"; (dataField as GPSData).GPSStuff = "bcde"; break; case (1): dataField = new DigitalData(); dataField.CommonStuff = "abcd"; (dataField as DigitalData).DigitalStuff = "cdef"; break; case (2): dataField = new DriverData(); dataField.CommonStuff = "abcd"; (dataField as DriverData).DriverStuff = "defg"; break; default: break; } }
/// <summary> /// 将数字片段添加到显示容器 /// </summary> /// <param name="dd"></param> private void AddSegmentsToPanel(DigitalData dd) { foreach (System.Reflection.PropertyInfo p in dd.GetType().GetProperties()) { Path segment = p.GetValue(dd, null) as Path; rootGrid.Children.Add(segment); } }
/// <summary> /// 设置所有segment的颜色 /// </summary> /// <param name="color"></param> private void SetAllSegmentsColor(DigitalData dd, Color color) { if (dd != null) { foreach (System.Reflection.PropertyInfo p in dd.GetType().GetProperties()) { Path segment = p.GetValue(dd, null) as Path; SetSegmentColor(segment, color); } } }
/// <summary> /// 画所有图形 /// </summary> /// <param name="clr"></param> private DigitalData DrawSegments(Dictionary <string, Segment> dgtSegmentDict, Color clr) { DigitalData digitalData = new DigitalData(); foreach (System.Reflection.PropertyInfo p in digitalData.GetType().GetProperties()) { p.SetValue(digitalData, DrawSegment(dgtSegmentDict[p.Name].Points, clr), null); } return(digitalData); }
/// <summary> /// 调用模板时的方法 /// </summary> public override void OnApplyTemplate() { base.OnApplyTemplate(); //获取根布局 rootGrid = GetTemplateChild("gdRoot") as Grid; //初始化Segments的点集digitalSegmentDict SetSegmentsData(); //画数字 dd = DrawSegments(digitalSegmentDict, LEDColor); //将线段添加到容器 AddSegmentsToPanel(dd); dd.DisplayDigital(Value); }
/// <summary> /// Gets the digital value of the specified digital channel for this timestep. Returns false if unspecified. /// </summary> /// <param name="digitalChannelID"></param> /// <returns></returns> public bool getDigitalValue(int digitalChannelID, List <TimeStep> allSteps, int myIndex) { if (DigitalData == null) { return(false); } if (!DigitalData.ContainsKey(digitalChannelID)) { return(false); } if (DigitalData[digitalChannelID].DigitalContinue) // this will be slightly more complicated, we need to look back in time { return(calculateDigitalContinueValue(digitalChannelID, allSteps, myIndex)); } else { return(DigitalData[digitalChannelID].getValue()); } }