Beispiel #1
0
        internal bool IsInViewRange(out Point point)
        {
            if (InitalDrawLocation == null)
            {
                point = new Point(0, 0);
                return(true);
            }

            point = new Point(InitalDrawLocation.Value.X - HorizontalOffset,
                              InitalDrawLocation.Value.Y - VerticalOffset); // 转换成相对位置
            return(AxisXConverter.IsInViewRagne(point.X) && AxisYConverter.IsInViewRagne(point.Y));
        }
        private void HandleEvent(Func <IBlockGridLayer, bool> handle, Point point, RoutedEventArgs e)
        {
            if ((AxisYConverter.IsInViewRagne(point.Y) && AxisXConverter.IsInViewRagne(point.X)) || HeaderIsHitted() || e.OriginalSource != e.Source)
            {
                foreach (BlockGridLayerBase blockGridLayerBase in Children)
                {
                    if (blockGridLayerBase.Visibility == Visibility.Visible)
                    {
                        if (handle(blockGridLayerBase))
                        {
                            break;
                        }
                    }
                }
            }
            else // out of range
            {
                if (e.RoutedEvent == Mouse.MouseUpEvent)
                {
                    foreach (var blockGridLayerBase in Children)
                    {
                        blockGridLayerBase.OnParentHitOutOfRangePrivate();
                    }
                }
            }

            //var head = Header as FrameworkElement;

            //IEnumerable<BlockGridLayerBase> layers;

            //if (head != null && point.Y <= head.ActualHeight)
            //    layers =
            //        Children.OfType<BlockGridLayerBase>().Where(c => (c.Region & LayerRegion.Head) == LayerRegion.Head);
            //else
            //    layers =
            //        Children.OfType<BlockGridLayerBase>().Where(c => (c.Region & LayerRegion.Body) == LayerRegion.Body);

            //BMK Refine Children When HandleEvent
        }
Beispiel #3
0
        private void ScrollToInitalDrawLocation()
        {
            #region 自动滚动到编辑格
            Point point;
            if (!IsInViewRange(out point))
            {
                //Scroll to 当 InitalDrawLocation 不再可视范围内, 自动定位
                if (!InitalDrawLocation.HasValue)
                {
                    return;
                }

                if (!AxisYConverter.IsInViewRagne(point.Y))
                {
                    AxisPanel.SetVerticalOffset(InitalDrawLocation.Value.Y);
                }
                if (!AxisXConverter.IsInViewRagne(point.X))
                {
                    AxisPanel.SetHorizontalOffset(InitalDrawLocation.Value.X);
                }
            }
            #endregion
        }
Beispiel #4
0
        private void SetToolTip(object sender, EventArgs e)
        {
            _timer.Stop();

            if (PointOutBlock == null)
            {
                return;
            }

            var point = Mouse.GetPosition(this);

            if (!AxisYConverter.IsInViewRagne(point.Y) || !AxisXConverter.IsInViewRagne(point.X))
            {
                return;
            }

            ToolTip.SaftyInvoke <ToolTip>(t =>
            {
                t.IsOpen    = true;
                t.Placement = PlacementMode.Mouse;
                t.Content   = PointOutBlock;
            });
        }