افزودن بهترین ویرایشگر متن به WPF

دوشنبه 4 آبان 1394

در این مقاله قصد افزودن ویرایشگر در WPF را داریم.به کمک این ویرایشگر می توانید امکان نوشتن ویرایش و ذخیره متن را به کاربر خود بدهید.

افزودن بهترین ویرایشگر متن به 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;
	}
}

بعد از اجرا شکل زیر را خواهید دید

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • WPF
  • 2k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید