private void RenderCode()
        {
            if (_rootElement == null || string.IsNullOrEmpty(Code))
            {
                return;
            }
            try
            {
                IGrammar grammar = null;
                switch (HighlightLanguage)
                {
                case HighlightLanguage.Python:
                    grammar = new PythonGrammar();
                    break;

                case HighlightLanguage.JavaScript:
                    grammar = new JavascriptGrammar();
                    break;

                case HighlightLanguage.CSharp:
                    grammar = new CSharpGrammar();
                    break;

                case HighlightLanguage.XML:
                    grammar = new XMLGrammar();
                    break;

                case HighlightLanguage.JSON:
                    grammar = new JSONGrammar();
                    break;

                case HighlightLanguage.SQL:
                    grammar = new SQLGrammar();
                    break;

                case HighlightLanguage.PHP:
                    grammar = new PHPGrammar();
                    break;

                case HighlightLanguage.Ruby:
                    grammar = new RubyGrammar();
                    break;

                case HighlightLanguage.CPlusPlus:
                    grammar = new CPlusPlusGrammar();
                    break;

                case HighlightLanguage.CSS:
                    grammar = new CSSGrammar();
                    break;

                case HighlightLanguage.Java:
                    grammar = new JavaGrammar();
                    break;

                default:
                    break;
                }

                var textBlock = new RichTextBlock();
                var paragraph = new Paragraph()
                {
                    FontFamily = new FontFamily("Consolas"),
                };

                if (grammar != null)
                {
                    Tokenizer     lexer   = new Tokenizer(grammar);
                    StringBuilder builder = new StringBuilder();
                    foreach (var token in lexer.Tokenize(Code))
                    {
                        var brush = BrushForTokenType(token.Type);
                        if (brush != null)
                        {
                            if (builder.Length > 0)
                            {
                                paragraph.Inlines.Add(new Run()
                                {
                                    Text = builder.ToString()
                                });
                                builder.Clear();
                            }
                            paragraph.Inlines.Add(new Run()
                            {
                                Text       = Code.Substring(token.StartIndex, token.Length),
                                Foreground = brush,
                            });
                        }
                        else
                        {
                            builder.Append(Code.Substring(token.StartIndex, token.Length));
                        }
                    }

                    if (builder.Length > 0)
                    {
                        paragraph.Inlines.Add(new Run()
                        {
                            Text = builder.ToString()
                        });
                        builder.Clear();
                    }
                }
                else
                {
                    var run = new Run()
                    {
                        Text = Code,
                    };
                    paragraph.Inlines.Add(run);
                }
                textBlock.Blocks.Add(paragraph);
                _rootElement.Child = textBlock;
            }
            catch (Exception ex)
            {
                _rootElement.Child = new TextBlock()
                {
                    Text = $"Unable to display this code. The error was: {ex.Message}"
                };
            }
        }