public DecompilerTextView()
        {
            InitializeComponent();

            this.referenceElementGenerator = new ReferenceElementGenerator(this.JumpToReference, this.IsLink);
            textEditor.TextArea.TextView.ElementGenerators.Add(referenceElementGenerator);
            this.uiElementGenerator       = new UIElementGenerator();
            this.bracketHighlightRenderer = new BracketHighlightRenderer(textEditor.TextArea.TextView);
            textEditor.TextArea.TextView.ElementGenerators.Add(uiElementGenerator);
            textEditor.Options.RequireControlModifierForHyperlinkClick = false;
            textEditor.TextArea.TextView.PointerHover        += TextViewMouseHover;
            textEditor.TextArea.TextView.PointerHoverStopped += TextViewMouseHoverStopped;
            textEditor.TextArea.AddHandler(PointerPressedEvent, TextAreaMouseDown, RoutingStrategies.Tunnel);
            textEditor.TextArea.AddHandler(PointerReleasedEvent, TextAreaMouseUp, RoutingStrategies.Tunnel);
            textEditor.TextArea.Caret.PositionChanged += HighlightBrackets;
            textEditor.Bind(TextEditor.FontFamilyProperty, new Binding {
                Source = DisplaySettingsPanel.CurrentDisplaySettings, Path = "SelectedFont"
            });
            textEditor.Bind(TextEditor.FontSizeProperty, new Binding {
                Source = DisplaySettingsPanel.CurrentDisplaySettings, Path = "SelectedFontSize"
            });
            textEditor.Bind(TextEditor.WordWrapProperty, new Binding {
                Source = DisplaySettingsPanel.CurrentDisplaySettings, Path = "EnableWordWrap"
            });

            // disable Tab editing command (useless for read-only editor); allow using tab for focus navigation instead
            RemoveEditCommand(EditingCommands.TabForward);
            RemoveEditCommand(EditingCommands.TabBackward);

            textMarkerService = new TextMarkerService(textEditor.TextArea.TextView);
            textEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService);
            textEditor.TextArea.TextView.LineTransformers.Add(textMarkerService);
            textEditor.ShowLineNumbers = true;
            DisplaySettingsPanel.CurrentDisplaySettings.PropertyChanged += CurrentDisplaySettings_PropertyChanged;

            // TODO: SearchPanel is automatically installed, but have to disable replace mode
            // TemplateApplied += (s,e) =>

            ShowLineMargin();

            // add marker service & margin
            textEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService);
            textEditor.TextArea.TextView.LineTransformers.Add(textMarkerService);
        }
        public DecompilerTextView()
        {
            HighlightingManager.Instance.RegisterHighlighting(
                "ILAsm", new string[] { ".il" },
                delegate {
                using (Stream s = typeof(DecompilerTextView).Assembly.GetManifestResourceStream(typeof(DecompilerTextView), "ILAsm-Mode.xshd")) {
                    using (XmlTextReader reader = new XmlTextReader(s)) {
                        return(HighlightingLoader.Load(reader, HighlightingManager.Instance));
                    }
                }
            });

            HighlightingManager.Instance.RegisterHighlighting(
                "C#", new string[] { ".cs" },
                delegate {
                using (Stream s = typeof(DecompilerTextView).Assembly.GetManifestResourceStream(typeof(DecompilerTextView), "CSharp-Mode.xshd")) {
                    using (XmlTextReader reader = new XmlTextReader(s)) {
                        return(HighlightingLoader.Load(reader, HighlightingManager.Instance));
                    }
                }
            });

            InitializeComponent();

            this.referenceElementGenerator = new ReferenceElementGenerator(this.JumpToReference, this.IsLink);
            textEditor.TextArea.TextView.ElementGenerators.Add(referenceElementGenerator);
            this.uiElementGenerator = new UIElementGenerator();
            textEditor.TextArea.TextView.ElementGenerators.Add(uiElementGenerator);
            textEditor.Options.RequireControlModifierForHyperlinkClick = false;
            textEditor.TextArea.TextView.PointerHover        += TextViewMouseHover;
            textEditor.TextArea.TextView.PointerHoverStopped += TextViewMouseHoverStopped;
            textEditor.TextArea.AddHandler(PointerPressedEvent, TextAreaMouseDown, RoutingStrategies.Tunnel);
            textEditor.TextArea.AddHandler(PointerReleasedEvent, TextAreaMouseUp, RoutingStrategies.Tunnel);
            textEditor.Bind(TextEditor.FontFamilyProperty, new Binding {
                Source = DisplaySettingsPanel.CurrentDisplaySettings, Path = "SelectedFont"
            });
            textEditor.Bind(TextEditor.FontSizeProperty, new Binding {
                Source = DisplaySettingsPanel.CurrentDisplaySettings, Path = "SelectedFontSize"
            });
            textEditor.Bind(TextEditor.WordWrapProperty, new Binding {
                Source = DisplaySettingsPanel.CurrentDisplaySettings, Path = "EnableWordWrap"
            });

            // disable Tab editing command (useless for read-only editor); allow using tab for focus navigation instead
            RemoveEditCommand(EditingCommands.TabForward);
            RemoveEditCommand(EditingCommands.TabBackward);

            textMarkerService = new TextMarkerService(textEditor.TextArea.TextView);
            textEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService);
            textEditor.TextArea.TextView.LineTransformers.Add(textMarkerService);
            textEditor.ShowLineNumbers = true;
            DisplaySettingsPanel.CurrentDisplaySettings.PropertyChanged += CurrentDisplaySettings_PropertyChanged;

            // TODO: SearchPanel is automatically installed, but have to disable replace mode
            // TemplateApplied += (s,e) =>

            ShowLineMargin();

            // add marker service & margin
            textEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService);
            textEditor.TextArea.TextView.LineTransformers.Add(textMarkerService);
        }