Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как надолго сохранить информацию о стиле в абзаце FlowDocument?

Автор вопроса: PollitzerОтветов: 1

Мое текстовое приложение размещает FlowDocument в WPF RichTextBox. Вы можете задать каждому абзацу свой стиль (FrameworkContentElement.Style). Текстовое описание стиля, относящегося к текущему абзацу (в позиции курсора), отображается в ComboBox. После сохранения и перезагрузки документа я замечаю: стиль каждого абзаца равен нулю. Поэтому мне нужен способ сохранить информацию о стиле [как целое или строковое значение] в абзаце. Я пытался злоупотреблять NameProperty, ToolTipProperty и TagProperty, но они сопротивлялись.

Есть у кого-нибудь идея? Я был бы признателен за это.

Я знаю, что злоупотребление свойствами WPF - это не профессиональный подход, может быть другое фундаментальное решение.

Все свойства стиля реализованы как динамические ресурсы и могут быть изменены пользователем. Если, скажем, цвет фона стиля абзаца изменен, все абзацы, использующие этот стиль, должны немедленно изменить свой цвет фона.

wpfrichtextboxdependency-propertiesflowdocument

Ответы

Ответ 1 · Pollitzer

Стили будут встроены и перезагружены, если вы сохраните и загрузите следующим образом:

// Storing a FlowDocument
using (FileStream fs = new FileStream(fullPath, FileMode.Create, FileAccess.Write))
{
    XamlWriter.Save(_flowDoc, fs);
}

// Loading a FlowDocument into a RichTextBox
using (FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read))
{
    _flowDoc = (FlowDocument)XamlReader.Load(fs);
    _rtb.Document = _flowDoc;
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы