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