コード例 #1
0
        public Rect MakeVisible(UIElement visual, Rect rectangle)
        {
            if (visual is FrameworkElement fe)
            {
                var scrollRect = new Rect(
                    _occludedRectPadding.Left,
                    _occludedRectPadding.Top,
                    ActualWidth - _occludedRectPadding.Right,
                    ActualHeight - _occludedRectPadding.Bottom
                    );

                var visualPoint = UIElement.TransformToVisual(visual, null).TransformPoint(new Point());
                var visualRect  = new Rect(visualPoint, new Size(fe.ActualWidth, fe.ActualHeight));

                var deltaX = Math.Min(visualRect.Left - scrollRect.Left, Math.Max(0, visualRect.Right - scrollRect.Right));
                var deltaY = Math.Min(visualRect.Top - scrollRect.Top, Math.Max(0, visualRect.Bottom - scrollRect.Bottom));

                NativePanel.SmoothScrollBy(ViewHelper.LogicalToPhysicalPixels(deltaX), ViewHelper.LogicalToPhysicalPixels(deltaY));
            }

            return(rectangle);
        }