AvaloniaUI / AvaloniaEdit

Avalonia-based text editor (port of AvalonEdit)
MIT License
753 stars 149 forks source link

TextEditor not display #298

Closed Coloryr closed 1 year ago

Coloryr commented 1 year ago

code:

<Window
    x:Class="ColorMC.Gui.UI.Windows.Window1"
    xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:AvalonEdit="clr-namespace:AvaloniaEdit;assembly=AvaloniaEdit"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="Window1"
    d:DesignHeight="450"
    d:DesignWidth="800"
    mc:Ignorable="d">
    <DockPanel>
        <AvalonEdit:TextEditor
            Name="Editor"
            Margin="30"
            FontFamily="Consolas,Menlo,Monospace"
            FontSize="14"
            FontWeight="Light"
            Foreground="#D4D4D4"
            HorizontalScrollBarVisibility="Auto"
            VerticalScrollBarVisibility="Visible" />
    </DockPanel>
</Window>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Resources;
using System.Runtime.CompilerServices;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using AvaloniaEdit;
using AvaloniaEdit.CodeCompletion;
using AvaloniaEdit.Document;
using AvaloniaEdit.Editing;
using AvaloniaEdit.Folding;
using AvaloniaEdit.Indentation.CSharp;
using AvaloniaEdit.Rendering;
using AvaloniaEdit.TextMate;
using TextMateSharp.Grammars;

namespace ColorMC.Gui.UI.Windows;

public partial class Window1 : Window
{
    private RegistryOptions _registryOptions;
    private readonly TextMate.Installation _textMateInstallation;
    private int _currentTheme = (int)ThemeName.DarkPlus;

    public Window1()
    {
        InitializeComponent();

        Editor.Background = Brushes.Transparent;
        Editor.ShowLineNumbers = true;
        Editor.ContextMenu = new ContextMenu
        {
            Items = new List<MenuItem>
                {
                    new MenuItem { Header = "Copy", InputGesture = new KeyGesture(Key.C, KeyModifiers.Control) },
                    new MenuItem { Header = "Paste", InputGesture = new KeyGesture(Key.V, KeyModifiers.Control) },
                    new MenuItem { Header = "Cut", InputGesture = new KeyGesture(Key.X, KeyModifiers.Control) }
                }
        };
        Editor.TextArea.Background = this.Background;
        Editor.Options.ShowBoxForControlCharacters = true;
        Editor.TextArea.IndentationStrategy = new CSharpIndentationStrategy(Editor.Options);
        Editor.TextArea.RightClickMovesCaret = true;

        _registryOptions = new RegistryOptions(
                (ThemeName)_currentTheme);

        _textMateInstallation = Editor.InstallTextMate(_registryOptions);

        TextMateSharp.Grammars.Language csharpLanguage = _registryOptions.GetLanguageByExtension(".cs");

        string scopeName = _registryOptions.GetScopeByLanguageId(csharpLanguage.Id);

        Editor.Document = new TextDocument(
            "// AvaloniaEdit supports displaying control chars: \a or \b or \v" + Environment.NewLine);
        _textMateInstallation.SetGrammar(_registryOptions.GetScopeByLanguageId(csharpLanguage.Id));
    }
}

_D@7)2A1ZS(BS6@4%3N)}M6

Coloryr commented 1 year ago

Avalonia: 0.10.18 Avalonia.AvaloniaEdit: 0.10.12.2 AvaloniaEdit.TextMate & Grammars: 0.10.12

danipen commented 1 year ago

Try this https://github.com/AvaloniaUI/AvaloniaEdit/issues/288

Coloryr commented 1 year ago

Try this #288

thanks