WPF RichTextBox очистил текст первой строки при нажатии клавиши «Ввод» - PullRequest
1 голос
/ 05 февраля 2020

У меня есть проект WPF (с MVVM Light), который содержит RichTextBox элемент управления с Toolbar, как показано на рисунке ниже enter image description here

Я пытаюсь сохранить отформатированный текст ( пользователь может изменить стиль содержимого расширенного текстового поля на «Полужирный», «Курсив», «Подчеркнуть» или увеличить или уменьшить размер шрифта) на sql облегченная база данных.

Я использую класс TextRange для захвата RichTextBox content.

 /* Get Richtext box text. */
 TextRange range;
 range = new TextRange(((FlowDocument)document).ContentStart,
                      ((FlowDocument)document).ContentEnd);
 /* Get Richtext box text. */

Но это не зафиксированный правильный текст, если текст выделен жирным шрифтом или курсивом. Я гуглил много часов, но я не могу найти правильный метод для моего требования. Пожалуйста, совет, если у кого есть идеи.

1 Ответ

1 голос
/ 05 февраля 2020

Я не знаю, где хранятся данные форматирования относительно свойств поля расширенного текста, но свойство TextRange.Text - это просто необработанная строка текста.

Мой подход заключается в извлечении сырые данные RTF и сохранить / загрузить это соответственно. Это также имеет то преимущество, что его можно открыть в любом другом текстовом редакторе, таком как Microsoft Word.

Чтобы получить представление строки RTF, вы можете использовать этот код:

var ms = new MemoryStream();
var doc = RichTextBox.Document;
var range = new TextRange(doc.ContentStart, doc.ContentEnd);
range.Save(ms, DataFormats.Rtf);
string rtfString = ASCIIEncoding.Default.GetString(ms.ToArray());

//You can then save this string to the database or whatever you want...

, а для загрузки строки RTF обратно в RichTextBox вы можете использовать этот код.

string rtfText = LoadTextFromDatabase() //However you read the saved string..
var ms = new MemoryStream(ASCIIEncoding.Default.GetBytes(rtfText));
RichTextBox.Selection.Load(ms, DataFormats.Rtf);

Надеюсь, это поможет и является подходящим решением для вас.

...