void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if ((bool)e.NewValue)
            {
                _textView.LayoutChanged    += OnLayoutChanged;
                _textView.ZoomLevelChanged += OnZoomLevelChanged;

                foreach (var line in _textView.TextViewLines)
                {
                    RefreshGlyphsOver(line);
                }

                _visualManager.MarginVisual.LayoutTransform = new ScaleTransform(scaleX: _textView.ZoomLevel / 100, scaleY: _textView.ZoomLevel / 100);
                if (_visualManager.MarginVisual.LayoutTransform.CanFreeze)
                {
                    _visualManager.MarginVisual.LayoutTransform.Freeze();
                }
            }
            else
            {
                _visualManager.RemoveGlyphsByVisualSpan(new SnapshotSpan(_textView.TextSnapshot, 0, _textView.TextSnapshot.Length));

                _textView.LayoutChanged    -= OnLayoutChanged;
                _textView.ZoomLevelChanged -= OnZoomLevelChanged;
            }
        }