Разрывы строк и отступ для XAML сохраненного FlowDocument? - PullRequest
1 голос
/ 28 июля 2010

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

Вот код, который яЯ использую для сохранения FlowDocument из WPF RichTextBox в виде файла XAML:

// Create a TextRange around the entire document
TextRange textRange = new TextRange(myRichTextBox.Document.ContentStart, myRichTextBox.Document.ContentEnd);

// Save file
using (FileStream fs = File.Create(fileName))
{
    textRange.Save(fs, DataFormats.Xaml);
}

Сохранение работает нормально, но, как я уже говорил, генерируемый XAML запускается вместе, без отступов и разрывов строкдля его различных элементов:

<Section xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xml:space="preserve" TextAlignment="Left" LineHeight="Auto" IsHyphenationEnabled="False" xml:lang="en-us" FlowDirection="LeftToRight" NumberSubstitution.CultureSource="Text" NumberSubstitution.Substitution="AsCulture" FontFamily="Calibri" FontStyle="Normal" FontWeight="Normal" FontStretch="Normal" FontSize="12" Foreground="#FF000000" Typography.StandardLigatures="True" Typography.ContextualLigatures="True" Typography.DiscretionaryLigatures="False" Typography.HistoricalLigatures="False" Typography.AnnotationAlternates="0" Typography.ContextualAlternates="True" Typography.HistoricalForms="False" Typography.Kerning="True" Typography.CapitalSpacing="False" Typography.CaseSensitiveForms="False" Typography.StylisticSet1="False" Typography.StylisticSet2="False" Typography.StylisticSet3="False" Typography.StylisticSet4="False" Typography.StylisticSet5="False" Typography.StylisticSet6="False" Typography.StylisticSet7="False" Typography.StylisticSet8="False" Typography.StylisticSet9="False" Typography.StylisticSet10="False" Typography.StylisticSet11="False" Typography.StylisticSet12="False" Typography.StylisticSet13="False" Typography.StylisticSet14="False" Typography.StylisticSet15="False" Typography.StylisticSet16="False" Typography.StylisticSet17="False" Typography.StylisticSet18="False" Typography.StylisticSet19="False" Typography.StylisticSet20="False" Typography.Fraction="Normal" Typography.SlashedZero="False" Typography.MathematicalGreek="False" Typography.EastAsianExpertForms="False" Typography.Variants="Normal" Typography.Capitals="Normal" Typography.NumeralStyle="Normal" Typography.NumeralAlignment="Normal" Typography.EastAsianWidths="Normal" Typography.EastAsianLanguage="Normal" Typography.StandardSwashes="0" Typography.ContextualSwashes="0" Typography.StylisticAlternates="0"><Paragraph NumberSubstitution.CultureSource="User" FontFamily="Segoe UI"><Run>Lorem ipsum dolor si ament</Run></Paragraph></Section>

Я хотел бы отформатировать XAML в файле, как обычный XAML, с переносами строк и отступами для различных элементов.Есть ли способ заставить .NET добавить форматирование, поскольку оно генерирует XAML?Спасибо.

1 Ответ

0 голосов
/ 28 июля 2010

Попробуйте использовать XmlTextWriter:

using (FileStream fs = File.Create(fileName)
{
    XmlTextWriter writer = new XmlTextWriter(fs, Encoding.Default);
    writer.Formatting = Formatting.Indented;
    textRange.Save(writer, DataFormats.Xaml);
}

Вторая попытка:

Это похоже на форматированный документ XML.

using (MemoryStream ms = new MemoryStream())
{
    textRange.Save(ms, DataFormats.Xaml);

    ms.Position = 0;
    StreamReader sr = new StreamReader(ms);

    XmlDocument doc = new XmlDocument();
    XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.Default);
    writer.Formatting = Formatting.Indented;

    doc.LoadXml(sr.ReadLine());
    doc.Save(writer);
    writer.Close();
}
...