ScintillaNET vs AvalonEdit для предоставления интерфейса сценариев для приложения WPF

Я работаю над проектом, который включает в себя реализацию интерфейса сценариев для моего приложения Windows WPF (.Net4). Мне любопытно, может ли кто-нибудь предложить предпочтительный редактор, AvalonEdit против ScintillaNET. Любые подводные камни и преимущества одного над другим. Нам нужно поддерживать как C#, так и IronPython в качестве языков сценариев. (По крайней мере, это первоначальный план. Хотя мы можем доработать один из них).

Одним из недостатков ScintillaNET является то, что это всего лишь управляемая оболочка над собственной (неуправляемой) Scintilla. Это вызовет какие-либо проблемы при использовании с WPF4.

Любые указатели и предложения приветствуются.


person Bhuvan    schedule 20.12.2011    source источник
comment
Бхуван, на чем ты в конце концов остановился? (сейчас почти 2 года спустя)   -  person Goswin    schedule 30.09.2014
comment
Я не использовал ни один из них в качестве компонента в своем исходном коде, но я использовал два продукта на основе каждого из них (QuickSharp на основе ScintillaNET и SharpDevelop на основе AvalonEdit) в качестве альтернативного облегченного редактора C#. Имо, SharpDevelop было больше возможностей, и с ним было намного проще работать.   -  person nawfal    schedule 24.05.2015


Ответы (1)


Я думаю, это зависит от того, сколько функций вы хотите реализовать в редакторе. Также, сколько работы вы готовы приложить, чтобы расширить его, и с какой кривой обучения вы готовы иметь дело.

Если вы ориентируетесь на Win32 и не возражаете против неуправляемой dll, то я думаю, что Scintilla.NET не будет проблемой. Также вы можете легко разместить его в WPF, как предлагает эта страница.

Лично я считаю, что Scintilla работает лучше, чем AvalonEdit. Кроме того, проще начать работу с базовым редактором, и он предлагает множество готовых решений, например, Scintilla предоставляет готовое свертывание кода.

С AvalonEdit вам нужно создать стратегию свертывания и самостоятельно проанализировать документ. Это то, что мне пришлось сделать, чтобы поддержать IronPython для AvalonEdit, который я еще не реализовал.

Все, что мне было нужно для поддержки редактора IronPython в scintilla, — это SciLexer.dll в пути поиска, сборка Scintilla.net и следующая конфигурация:

private void Form1_Load(object sender, EventArgs e)
    {
        this.scintilla1 = new ScintillaNet.Scintilla();
        this.scintilla1.ConfigurationManager.Language = "python";
        this.scintilla1.Indentation.ShowGuides = true;
        this.scintilla1.Indentation.SmartIndentType = ScintillaNet.SmartIndent.Simple;
        this.scintilla1.Location = new System.Drawing.Point(0, 0);
        this.scintilla1.Margins.Margin0.Width = 40;
        this.scintilla1.Margins.Margin2.Width = 20;
        this.scintilla1.Name = "scintilla1";
        this.scintilla1.TabIndex = 4;
        this.scintilla1.Whitespace.Mode = ScintillaNet.WhitespaceMode.VisibleAfterIndent;
        this.scintilla1.Dock = DockStyle.Fill;
        this.Controls.Add(this.scintilla1);
    }

Для AvalonEdit вам необходимо загрузить внешний файл подсветки, вы можете увидеть это сообщение в блоге для получения дополнительной информации. Итак, если вам нужны основы (подсветка, сворачивание для python+c#), мой вывод: шинтилла проще и работает лучше. Хотя с AvalonEdit вы, возможно, сможете сделать больше, если захотите приложить усилия и справиться с кривой обучения. На данный момент я использую Scintilla в качестве стабильного редактора и экспериментирую с Avalon в качестве доказательства концепции. Возможно, у меня тоже сформируются новые мнения, когда я узнаю больше о редакторе.

Удачи

person Andre    schedule 03.01.2012
comment
Спасибо Андре. это очень полезно - person Bhuvan; 19.01.2012
comment
@Andre, ты бы по-прежнему ответил то же самое сегодня (почти 2 года спустя)? - person Goswin; 30.09.2014
comment
Да, я тоже хотел бы получить ответ на вопрос @Goswin. - person gideon; 16.06.2015