Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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分钟数据单位
        }
Exemplo n.º 4
0
        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));
        }