2011-12-20 11 views
15

WPF (.Net4) windows Uygulamam için bir komut dosyası oluşturma arabiriminin uygulanmasını içeren bir proje üzerinde çalışıyorum. Tercih edilen bir editör, AvalonEdit vs ScintillaNET vs önerebilir miyim merak ediyorum. Birinin diğeri üzerindeki tuzakları ve avantajları. Hem C# hem de IronPython'u betik dili olarak desteklememiz gerekiyor. (En azından bu başlangıç ​​planıdır. Ancak bunlardan birini bitirebiliriz).ScintillaNET vs AvalonEn WPF Uygulaması için komut dosyası oluşturma arabirimi sağlamak için Düzenleme

ScintillaNET'in dezavantajlarından biri, yerel (yönetilmeyen) Scintilla'nın etrafındaki yönetilen bir sarıcı olmasıdır. Bu WPF4 ile kullanıldığında sorunlara neden olur mu.

Herhangi bir işaretçi ve önerileriniz takdir edilir.

+2

Bhuvan, sonunda neye yerleştin? (şimdi, neredeyse 2 yıl sonra) – Goswin

+0

Kaynak kodumda bir bileşen olarak kullanmıyorum, ancak her biri ("ScintillaNET" ve "SharpDevelop" temelindeki "AvalonEdit" temelli QuickSharp) iki ürünü kullandım. alternatif hafif C# editörü. Imo, SharpDevelop'ın daha özellikli ve çalışmak daha kolaydı. – nawfal

cevap

22

Bu, editörde uygulamak istediğiniz özelliklerin sayısına bağlı olduğunu düşünüyorum. Ayrıca, ne kadar çalışmak istediğinizi ve ne kadar bir öğrenme eğrisi ile uğraşmak istediğinizi belirtin.

Win32'yi hedefliyorsanız ve yönetilmeyen dll'yi düşünmüyorsanız, Scintilla.NET'in bir sorun olmayacağını düşünüyorum. Ayrıca kolayca WPF içinde this sayfa önerileri olarak barındırabilirsiniz.

Şahsen ben Scintilla'nın AvalonEdit'den daha iyi performans gösterdiğini hissettim. Ayrıca, temel bir editör ile başlamak daha kolaydır ve kutudan çok daha fazlasını sağlar, örneğin Scintilla kutunun dışına katlanan kod sağlar.

AvalonEdit ile bir katlama stratejisi oluşturup belgeyi kendiniz ayrıştırmalısınız. Bu, henüz uygulanmadığım AvalonEdit için IronPython'u desteklemek için yapmak zorunda olduğum şey.

ben scintilla bir IronPython editörü desteklemek için gerekli tüm arama yolunda SciLexer.dll ve Scintilla.net montaj ve aşağıdaki yapılandırma oldu:

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 için harici bir vurgulayıcı yüklemek zorunda dosya, daha fazla bilgi için this blog gönderisini görebilirsiniz. Öyleyse, temelleri (python + C# için vurgulama, katlama) istiyorsanız, sonuçta schintilla daha kolay ve daha iyi performans gösterir. AvalonEdit ile birlikte çaba harcamak ve öğrenme eğrisi ile uğraşmak için istekli iseniz daha fazla yapmak mümkün olabilir. Şu anda Scintilla'yı kararlı editörüm olarak kullanıyorum ve Avalon ile bir kavram kanıtı olarak deney yapıyorum. Editör hakkında daha fazla şey öğrendiğim için belki de yeni fikirler oluşturacağım.

İyi şanslar

+0

Teşekkürler Andre. Bu çok yararlı – Bhuvan

+6

@Andre, Hala aynı bugün (neredeyse 2 yıl sonra) cevap verir misiniz? – Goswin

+0

Yep @ Goswin'in sorusuna da bir yanıt istiyorum. – gideon

İlgili konular