private void RefreshChildElement() { if (AxisPanel == null) { return; } //得到相对于大容器的位置 var viewPortWidth = AxisPanel.ViewportRangeX.ViewMin;//AxisXConverter.ScreenToViewport(0); //用段的模求出偏移量 var xTranslateTransform = viewPortWidth % HourWidth; var firstSectionX = viewPortWidth - xTranslateTransform; for (var i = 0; i < VisualChildrenCount; i++) { var x = i * HourWidth - xTranslateTransform; var date = AxisXConverter.ToData(firstSectionX + (i * HourWidth)); // Debug.Print(date.ToString()); _contentPresenterList[i].Content = date; _contentPresenterList[i].Arrange(new Rect(new Point(x, 0), _contentPresenterList[i].DesiredSize)); } }
public Rect MeasureDragingArea(int screenDataRowIndex) { // 取两点 画出一个范围方块 var xMin = Math.Min(_currentPoint.X, _startPoint.X); var yMin = Math.Min(_currentPoint.Y, _startPoint.Y); var xMax = Math.Max(_currentPoint.X, _startPoint.X); var yMax = Math.Max(_currentPoint.Y, _startPoint.Y); var end = AxisXConverter.ToData(xMax); _timeRange = new TimeRange(AxisXConverter.ToData(xMin), end.TimeOfDay.TotalHours > 0 ? end.Date.AddDays(1) : end); ClickDate = _timeRange.Start.Date; screenDataRowIndex = 0;//_shiftKeyPressed ? 0 : screenDataRowIndex; var maxDataRowIndex = Math.Min(GetItemsSourceCount() - 1, (int)(yMax / Interval) + screenDataRowIndex); _dataRowRange = new[] { Math.Min((int)(yMin / Interval) + screenDataRowIndex, maxDataRowIndex), maxDataRowIndex }; //Debug.Print(string.Format("y:{0}, {1}", yMax, _currentPoint.Y)); //Debug.Print(string.Format("row:{0}", _dataRowRange[1])); _measureofArea = new Rect(xMin, yMin, xMax - xMin, yMax - yMin); SelectionTimeRange = TimeRange; SelectionDataRowRange = DataRowRange; return(_measureofArea); }
private int GetCurrentIndex(Point point) { if (AxisPanel == null) { return(-1); } var datetime = AxisXConverter.ToData(point.X + AxisPanel.ViewportRangeX.ViewMin); datetime = datetime.AddSeconds(-datetime.Second); _pointDateTime = datetime; var remains = datetime.Minute % 15; if (remains < 3) { datetime = datetime.AddMinutes(-remains); } else if (12 < remains) { datetime = datetime.AddMinutes(15 - remains); } else if (remains == 0) { } else { datetime = datetime.AddMinutes(-remains); } return((int)(datetime.Subtract(_enquiryStartTime).TotalHours * 4)); // 4 = perHourCount 一小時4格, 15分钟数据单位 }
protected override int GetCurrentIndex(Point point) { // var viewPortWidth = AxisPanel.HorizontalOffset;//AxisXConverter.ScreenToViewport(0); //var viewMin = AxisXConverter.ViewportToData(0); ;//AxisXConverter.ViewportToData(0); var datetime = AxisXConverter.ToData(point.X + AxisPanel.HorizontalOffset); var remains = datetime.Minute % 15; if (remains < 3) { datetime = datetime.AddMinutes(-remains); } else if (12 < remains) { datetime = datetime.AddMinutes(15 - remains); } else if (remains == 0) { } else { return(-1); } datetime = datetime.AddSeconds(-datetime.Second); // System.Diagnostics.Debug.Print(datetime.ToString()); return((int)(datetime.Subtract(_enquiryStartTime).TotalHours *PerHourCount)); }