افزودن بهترین ویرایشگر متن به WPF
دوشنبه 4 آبان 1394در این مقاله قصد افزودن ویرایشگر در WPF را داریم.به کمک این ویرایشگر می توانید امکان نوشتن ویرایش و ذخیره متن را به کاربر خود بدهید.
در بسیاری از نرم افزار های حرفه ای امکان ویرایش متن دلخواه کاربر پیش بینی شده است .در WPF هم امکان افزودن کامپوننت هایی که کار ویرایش متن را انجام می دهند هم وجود دارد.یکی از معروفترین کامپوننت های Open-Source در این زمینه “ScintillaNET” است .ولی این کامپوننت اساسا برای “Windows Forms” طراحی شده است.ولی با کمک “Windows Form Host” می تواند در WPF هم استفاده شود.ولی مشکل استفاده از آن دشواری افزودن این کامپوننت و همچنین احتمال بالای خطا می باشد.
روش دیگری هم برای اینکه یک ویرایشگر متن به پروژه WPF خود بیافزاییم وجود دارد و آن هم استفاده از “ActiPro Software” است .نکته ای که هست قیمت بالای این کامپوننت است و شاید ترجیح بدهیم از یک منبع رایگان استفاده کنیم .پیشنهاد ما در این مقاله استفاده از “AvalonEdit” است .
در پروژه ای که ضمیمه این مقاله است ما دو Class Library ایجاد کرده ایم و به آنها “AvalonEdit” را افزوده ایم .سپس در کلاس اصلی به نام AvalonEdit.Sample و در داخل Refrence ها این دو کلاس را اضافه کرده و از آنها استفاده کرده ایم .کد افزودن AvalonEdit” به برنامه به صورت زیر است.
private void Set_AvalonEditTextEditorSyntaxHighlighting(string psSyntaxHighlightingCode) { string lsSourceCodeSyntaxHighlightingName = ""; Stream loXshdStream = default(Stream); XmlTextReader loXmlTextReader = default(XmlTextReader); lsSourceCodeSyntaxHighlightingName = (psSyntaxHighlightingCode.Trim().Equals("CS") ? "C#" : "VBNET"); // --- // load editor syntax highlighting file // --- loXshdStream = null; switch (lsSourceCodeSyntaxHighlightingName) { case "C#": loXshdStream = File.OpenRead(Convert.ToString("CSharp-Mode.xshd")); break; case "VBNET": loXshdStream = File.OpenRead(Convert.ToString("VBNET-Mode.xshd")); break; } loXmlTextReader = new XmlTextReader(loXshdStream); aeteSourceCode.SyntaxHighlighting = _ ICSharpCode.AvalonEdit.Highlighting.Xshd.HighlightingLoader.Load (loXmlTextReader, ICSharpCode.AvalonEdit.Highlighting.HighlightingManager.Instance); // --- // set editor indentation settings // --- switch (lsSourceCodeSyntaxHighlightingName) { case "XML": aeteSourceCode.TextArea.IndentationStrategy = new ICSharpCode.AvalonEdit.Indentation.DefaultIndentationStrategy(); break; case "C#": case "C++": case "PHP": case "Java": aeteSourceCode.TextArea.IndentationStrategy = new ICSharpCode.AvalonEdit.Indentation.CSharp.CSharpIndentationStrategy_ (aeteSourceCode.Options); break; default: aeteSourceCode.TextArea.IndentationStrategy = new ICSharpCode.AvalonEdit.Indentation.DefaultIndentationStrategy(); break; } }
بعد از اجرا شکل زیر را خواهید دید
- WPF
- 2k بازدید
- 1 تشکر