예제 #1
0
        private void SetHighlightCurrentLineBackground(SolidColorBrush brush)
        {
            try
            {
                var oldRenderer = null as HighlightCurrentLineBackgroundRenderer;

                foreach (var item in this.TextArea.TextView.BackgroundRenderers)
                {
                    if (item != null && item is HighlightCurrentLineBackgroundRenderer)
                    {
                        oldRenderer = item as HighlightCurrentLineBackgroundRenderer;
                    }
                }

                this.TextArea.TextView.BackgroundRenderers.Remove(oldRenderer);

                if (this._currentLineRenderer != null)
                {
                    if (this.TextArea.TextView.BackgroundRenderers.Contains(this._currentLineRenderer))
                    {
                        this.TextArea.TextView.BackgroundRenderers.Remove(this._currentLineRenderer);
                    }
                    this._currentLineRenderer = null;
                }

                this._currentLineRenderer = new HighlightCurrentLineBackgroundRenderer(this, brush.Clone());
                this.TextArea.TextView.BackgroundRenderers.Add(this._currentLineRenderer);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }
예제 #2
0
        /// <summary>
        /// Reset the <seealso cref="SolidColorBrush"/> to be used for highlighting the current editor line.
        /// </summary>
        private void AdjustCurrentLineBackground()
        {
            HighlightCurrentLineBackgroundRenderer oldRenderer = null;

            // Make sure there is only one of this type of background renderer
            // Otherwise, we might keep adding and WPF keeps drawing them on top of each other
            foreach (var item in this.TextArea.TextView.BackgroundRenderers)
            {
                if (item != null)
                {
                    if (item is HighlightCurrentLineBackgroundRenderer)
                    {
                        oldRenderer = item as HighlightCurrentLineBackgroundRenderer;
                    }
                }
            }

            if (oldRenderer != null)
            {
                this.TextArea.TextView.BackgroundRenderers.Remove(oldRenderer);
            }

            this.TextArea.TextView.BackgroundRenderers.Add(new HighlightCurrentLineBackgroundRenderer(this));
        }