ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.09.2019
Просмотров: 134
Скачиваний: 1
â 4_5 Создание WPF ÑекÑÑового ÑедакÑоÑа
Ðадание
СоздаÑÑ Ð¼Ð½Ð¾Ð³Ð¾Ð´Ð¾ÐºÑменÑнÑй ÑекÑÑовÑй ÑедакÑÐ¾Ñ Ð½Ð° оÑнове Ñаблона
пÑоекÑа WPF. ТÑебованиÑ:
1)
Ðолжен
поддеÑживаÑÑ
динамиÑеÑкий
инÑеÑÑейÑ.
Ðанели
инÑÑÑÑменÑов, менÑ, оÑновное окно и дÑ. ÑлеменÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ
изменÑÑÑÑÑ Ð¿ÑопоÑÑионалÑно ÑазмеÑам окна. ÐÑполÑзÑйÑе
вложеннÑе конÑейнеÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ (Grid, StrackPanel, DockPanel и
Ñ.д.) и ÑвойÑÑва.
2)
Ðолжен ÑодеÑжаÑÑ Ð¼ÐµÐ½Ñ (
<
Menu
>
<
MenuItem
Header
="_File"
x
:
Name
="File">
<
MenuItem
Header
=" _Save"
x
:
Name
="Save"/>...
)
и дÑблиÑÑÑÑÑÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¸Ð½ÑÑÑÑменÑов:
File
ï
New
,
Save, Open
(иÑполÑзÑйÑе ÑÑандаÑÑнÑе диалоги оÑкÑÑÑÐ¸Ñ OpenFileDialog и
ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑекÑÑового Ñайла SaveFileDialog),
Edit
ï
Copy,
Paste
(поддеÑжка ÑабоÑÑ Ñ Ð±ÑÑеÑом обмена, кÑоме Ñого ÐУ RichTextBox
поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¼ÐµÑÐ¾Ð´Ñ Copy(), Paste(), Undo(), Cut(), SpellCheck,
ÑоÑмаÑÑ, вÑделениÑ, паÑагÑаÑÑ, блоки, ÑÑили, поиÑк и Ð·Ð°Ð¼ÐµÐ½Ñ Ð¸
Ñ.д),
Font
и
Color
(ÑеализÑÐµÑ ÑÑандаÑÑнÑе диалоги наÑÑÑойки ÑÑиÑÑа и
вÑбоÑа ÑвеÑа длÑ
вÑделенного ÑÑагменÑа
) а Ñакже Combox (ÑодеÑжиÑ
пеÑеÑиÑление из 4-6 ÑÑиÑÑов) и Slider (ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа) и
ÑÑи ToggleButton, коÑоÑÑе ÑÑÑанавливаÑÑ FontStyles жиÑнÑй, кÑÑÑив и
подÑеÑкивание.
<
ToolBar
>
<
Button
x
:
Name
="_Save"
ToolTip
="Save"
Command
="Edit.Save">
<
Image
Source
="files/3.jpg"
Height
="20"
Width
="20" />
</
Button
>
<
ToggleButton
> ...
ÐобавÑÑе ÑÑÑÐ¾ÐºÑ ÑоÑÑоÑÐ½Ð¸Ñ Ñ Ð¸Ð½ÑоÑмаÑией о ÑиÑле Ñимволов (Ñлов) и
slider -ом маÑÑÑабиÑованиÑ.
Ðожно
иÑполÑзоваÑÑ
Ribbon
control
из
библиоÑеки
RibbonControlsLibrary.dll
ÐÑе дейÑÑÐ²Ð¸Ñ ÑедакÑоÑа Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ ÑеÑез Command.
3)
РоблаÑÑи ввода ÑекÑÑа (пÑоÑе иÑполÑзоваÑÑ ÐУ RichTextBox)
Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ drag-and-drop (напÑимеÑ, пеÑеÑаÑкивание
Ñайла в ÑедакÑÐ¾Ñ Ð¸Ð»Ð¸ ÑекÑÑового блока).
4)
ÐÑи Ñоздании нового окна к Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ Ð¾ÐºÐ½Ð° поÑледоваÑелÑно
добавлÑеÑÑÑ Ð½Ð¾Ð¼ÐµÑ Ñозданного окна и пÑиÑваиваеÑÑÑ Ð¸Ð¼Ñ Ð¿Ð¾
ÑмолÑÐ°Ð½Ð¸Ñ (напÑимеÑ: Window1 Window2 и Ñ.д.). ÐÑи загÑÑзке
Ñайла в окно â в заголовке оÑобÑажаеÑÑÑ Ð¿Ð¾Ð»Ð½Ñй пÑÑÑ Ð¸ имÑ
Ñайла. ÐÑоме ÑÑого, окно должно ÑодеÑжаÑÑ ÐºÐ¾Ð½ÑекÑÑное Ð¼ÐµÐ½Ñ Ñ
командами :
Close
(ÑекÑÑее окно) и
Copy, Delete и Ñ.д
.
5)
ÐобавÑÑе поддеÑÐ¶ÐºÑ Ð´Ð²ÑÑ
ÑзÑков инÑеÑÑейÑа (напÑимеÑ, ÑÑÑÑкий и
английÑкий). Ðолжна поддеÑживаÑÑÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑÐºÐ°Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°ÑÐ¸Ñ Ð½Ð°
оÑнове Resource Dictionary.
6)
ÐодгÑÑзиÑÑ Ð² ÑедакÑÐ¾Ñ Ñвой кÑÑÑÐ¾Ñ Ð¸ наÑиÑованнÑÑ ÑÐ²Ð¾Ñ Ð¸ÐºÐ¾Ð½ÐºÑ Ð´Ð»Ñ
пÑиложениÑ.
7)
СоздайÑе
ÑÑилÑ
Ð´Ð»Ñ Ð²Ð°Ñего ÑедакÑоÑа и пÑимениÑе его.
ÐÑимеÑ:
СÑандаÑÑнÑе клаÑÑÑ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð²
OpenFileDialog или SaveFileDialog иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑказаниÑ
меÑÑÐ¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ имени Ñайла, а заÑем ÑекÑÑ Ð·Ð°Ð³ÑÑжаеÑÑÑ Ð¸Ð»Ð¸ ÑоÑ
ÑанÑеÑÑÑ Ñ
помоÑÑÑ Ð¾Ð±ÑекÑа TextRange, коÑоÑÑй Ð¼Ñ Ð¿Ð¾Ð»ÑÑаем непоÑÑедÑÑвенно из
RichTextBox. Ðн обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð´Ð¾ÑÑÑп к ÑизиÑеÑÐºÐ¾Ð¼Ñ ÑайлÑ. Файл
загÑÑжаеÑÑÑ Ð¸ ÑоÑ
ÑанÑеÑÑÑ Ð² ÑоÑмаÑе RTF, но Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑказаÑÑ Ð¾Ð´Ð¸Ð½ из
дÑÑгиÑ
ÑоÑмаÑов.
using
Microsoft.Win32;
OpenFileDialog
dlg =
new
OpenFileDialog
();
dlg.Filter =
"Rich Text Format (*.rtf)|*.rtf|All files (*.*)|*.*"
;
if
(dlg.ShowDialog() ==
true
)
{
FileStream
fileStream =
new
FileStream
(dlg.FileName,
FileMode
.Open);
TextRange
range =
new
TextRange
(rtbEditor.Document.ContentStart,
rtbEditor.Document.ContentEnd);
range.Load(fileStream,
DataFormats
.Rtf);
}
SaveFileDialog
dlg =
new
SaveFileDialog
();
dlg.Filter =
"Rich Text Format (*.rtf)|*.rtf|All files (*.*)|*.*"
;
if
(dlg.ShowDialog() ==
true
)
{
FileStream
fileStream =
new
FileStream
(dlg.FileName,
FileMode
.Create);
TextRange
range =
new
TextRange
(rtbEditor.Document.ContentStart,
rtbEditor.Document.ContentEnd);
range.Save(fileStream,
DataFormats
.Rtf);
}