2011-12-20 28 views
15

Tôi đang làm việc trên một dự án bao gồm triển khai giao diện kịch bản cho ứng dụng Windows WPF (.Net4) của tôi. Tôi tò mò nếu có ai có thể đề xuất một trình soạn thảo ưa thích, AvalonEditScintillaNET. Bất kỳ cạm bẫy và lợi thế của một trong những khác. Chúng tôi cần hỗ trợ cả C# và IronPython làm ngôn ngữ kịch bản. (Ít nhất đó là kế hoạch ban đầu. Chúng ta có thể hoàn thành một trong số đó).ScintillaNET vs AvalonChỉnh sửa để cung cấp giao diện tập lệnh cho ứng dụng WPF

Một trong những nhược điểm của ScintillaNET là nó chỉ là một trình bao bọc được quản lý xung quanh Scintilla bản địa (không được quản lý). Điều này sẽ gây ra bất kỳ vấn đề khi được sử dụng với WPF4.

Mọi gợi ý và đề xuất đều được đánh giá cao.

+2

Bhuvan, cuối cùng bạn đã quyết định điều gì? (bây giờ, gần 2 năm sau) – Goswin

+0

Tôi không sử dụng như một thành phần trong mã nguồn của mình, nhưng tôi đã sử dụng hai sản phẩm dựa trên mỗi ('QuickSharp' dựa trên' ScintillaNET' và 'SharpDevelop' dựa trên' AvalonEdit') một trình soạn thảo C# nhẹ thay thế. Imo, 'SharpDevelop' nổi bật hơn và dễ làm việc hơn nhiều. – nawfal

Trả lời

22

Tôi nghĩ điều này phụ thuộc vào số lượng tính năng bạn muốn triển khai trong trình chỉnh sửa. Ngoài ra bao nhiêu công việc bạn sẵn sàng để đưa vào để mở rộng nó và bao nhiêu của một đường cong học tập bạn sẵn sàng để đối phó với.

Nếu bạn đang nhắm mục tiêu Win32 và bạn không nhớ dll không được quản lý thì tôi nghĩ Scintilla.NET sẽ không thành vấn đề. Ngoài ra, bạn có thể dễ dàng lưu trữ nó trong WPF như trang this gợi ý.

Cá nhân tôi cảm thấy Scintilla hoạt động tốt hơn AvalonEdit. Nó cũng dễ dàng hơn để bắt đầu với một trình soạn thảo cơ bản, và cung cấp rất nhiều trong hộp, ví dụ Scintilla cung cấp mã gấp ra khỏi hộp.

Với AvalonChỉnh sửa bạn phải tạo chiến lược gấp và phân tích cú pháp tài liệu, Đây là những gì tôi phải làm để hỗ trợ IronPython cho AvalonEdit mà tôi chưa triển khai.

Tất cả tôi cần thiết để hỗ trợ một biên tập viên IronPython trong Scintilla là SciLexer.dll trong con đường tìm kiếm và lắp ráp Scintilla.net và cấu hình như sau:

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); 
    } 

Đối AvalonEdit bạn phải tải một highlighter bên ngoài , bạn có thể xem bài đăng trên blog this để biết thêm thông tin. Vì vậy, nếu bạn muốn những điều cơ bản (làm nổi bật, gấp cho python + C#) kết luận của tôi là schintilla là dễ dàng hơn và thực hiện tốt hơn. Mặc dù với AvalonEdit bạn có thể có thể làm nhiều hơn vào cuối nếu bạn sẵn sàng đặt trong nỗ lực và đối phó với các đường cong học tập. Hiện tại tôi đang sử dụng Scintilla làm biên tập viên ổn định của mình và đang thử nghiệm với Avalon như một bằng chứng về khái niệm. Có lẽ tôi cũng sẽ hình thành những ý kiến ​​mới khi tôi tìm hiểu thêm về người biên tập.

Chúc may mắn

+0

Cảm ơn Andre. Điều này là rất hữu ích – Bhuvan

+6

@Andre, bạn vẫn sẽ trả lời cùng ngày hôm nay (gần 2 năm sau)? – Goswin

+0

Vâng, tôi cũng muốn trả lời câu hỏi của Goswin. – gideon

Các vấn đề liên quan