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 }
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 }
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; }); }