Расширяемость Visual Studio: Rectange-s, добавленные в класс Children класса ScrollbarMargin, предотвращают щелчки мыши на полосе прокрутки - PullRequest
0 голосов
/ 04 января 2019

Некоторое время назад я разработал расширение, позволяющее выделить часть полосы прокрутки указанным цветом, вот как я это делаю:

/// <summary>On layout changed analyze the regions and lines and highlight them on the scroll bar if needed.</summary>
    private void OnLayoutChanged(object sender, TextViewLayoutChangedEventArgs e)
    {
        Children.Clear();

        int n = AllAdornments.TextAdornment.Regions.Length;
        for (int i = 0; i < n; i++)
        {
            if (AllAdornments.TextAdornment.Regions[i].Adornment != null
                && AllAdornments.TextAdornment.Regions[i].EndLine < e.NewSnapshot.LineCount)
            {
                var rect = new Rectangle();
                var firstLine = e.NewSnapshot.GetLineFromLineNumber(AllAdornments.TextAdornment.Regions[i].StartLine);
                var lastLine = e.NewSnapshot.GetLineFromLineNumber(AllAdornments.TextAdornment.Regions[i].EndLine);
                double top, bottom;
                double firstLineTop;
                MapLineToPixels(firstLine, out firstLineTop, out bottom);
                SetTop(rect, firstLineTop);
                SetLeft(rect, ScrollBarLeftPadding);
                MapLineToPixels(lastLine, out top, out bottom);
                rect.Height = bottom - firstLineTop;
                rect.Width = ScrollBarWidth;
                Color color = Communicator.LerpColor(AllAdornments.TextAdornment.UserBackgroundCol,
                    AllAdornments.TextAdornment.Regions[i].Adornment.Color, ScrollBarIntensity
                    * AllAdornments.TextAdornment.Regions[i].Adornment.IntensityMult);
                color.A = ScrollBarOpacity;
                rect.Fill = new SolidColorBrush(color);

                Children.Add(rect);
            }
        }
   }

Вот как это выглядит в Visual Studio:

Colored Regions

Это прекрасно работало в течение долгого времени (около 1,5 - 2 года), но когда я обновил VS четыре месяца назад, возникла проблема: я больше не могу щелкать по разделу поля полосы прокрутки с цветным прямоугольником - щелчок мыши просто ничего не делает, если он находится над цветным прямоугольником. В пустом разделе полосы прокрутки все работает как обычно. Раньше я мог не только нажимать на свои прямоугольники, но удерживать кнопку мыши и перетаскивать полосу прокрутки. Можно ли как-нибудь вернуть эту функциональность?

1 Ответ

0 голосов
/ 04 января 2019

Можете ли вы попробовать установить rect.IsHitTestVisible = false;

...