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

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

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

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

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


person Pollitzer    schedule 27.02.2014    source источник


Ответы (1)


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

// 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;
}
person Pollitzer    schedule 08.05.2014