Как правильно рисовать с отступом, XML содержимое документа внутри FlowDocumentReader? - PullRequest
0 голосов
/ 09 января 2020

У меня есть содержимое этого окна WPF с FlowDocumentReader внутри:

<Window x:Class="KopiranjeProekti.UpatstvoZaKoristenjeWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:KopiranjeProekti"
        mc:Ignorable="d"
        Title="Упатство за Користење" Height="450" Width="800" Closing="Window_Closing">
    <Grid>
        <FlowDocumentReader Grid.Row="1" BorderBrush="Navy" BorderThickness="2" Name="flowReader">
            <FlowDocument
                Name="flowDoc"
                TextAlignment="Justify" 
                IsOptimalParagraphEnabled="True"
                IsHyphenationEnabled="True"
                IsColumnWidthFlexible="True"
                Background="AliceBlue"
                ColumnWidth="300"
                ColumnGap="20">
                <Paragraph>
                    1. Ова е софтвер за копирање на постоечки проекти(папки) и целокупната нивна содржина.
                    На Виндоус 10 некои фајлови прават пречка за копирање, како на пример *.OCX(ActiveX компонента),
                    засебни *.EXE извршни фајлови. Затоа пожелно е фајловите кои се добиваат како извод на компајлирање
                    или се некакви засебни компоненти или извршни датотеки, да се чуваат надвор од папката која треба да 
                    се ископира со нејзината содржина. 
                </Paragraph>
                <Paragraph>
                        2. За да се користи апликаcијата потребно е на дискот C: да се створи папка која ќе се вика KopiranjeProekti
                    и во нејзе да се сними фајл Proekti.xml кој ќе има содржина налик на следнава:ж    
                </Paragraph>
                <Paragraph>
                    &lt;?xml version="1.0" encoding="utf-8" ?&gt;
                    &lt;proekti&gt;

                      &lt;sektorskiPateka&gt;sektorski disk pateka&lt;/sektorskiPateka&gt;
                      &lt;nasPateka&gt;Network Access Storage(NAS) disk&lt;/nasPateka&gt;
                      &lt;spodeluvanjePateka&gt;pateka za spodeluvanje so kolegi&lt;/spodeluvanjePateka&gt;
                      &lt;mcafeeServerPateka&gt;pateka na kompjuter kade se arhiviraat aplikaciite&lt;/mcafeeServerPateka&gt;

                      &lt;proekt&gt;
                        &lt;ime&gt;WpfExercise1&lt;/ime&gt;
                        &lt;pateka&gt;C:\Users\vlzak\Documents\c_sharp_vezhbi\WpfExercise1&lt;/pateka&gt;
                      &lt;/proekt&gt;

                    &lt;/proekti&gt;
                </Paragraph>
            </FlowDocument>
        </FlowDocumentReader>
    </Grid>
</Window>

Как видите, я пытаюсь объяснить содержимое заданных XML документов внутри FlowDocumentReader. Хотя это работает и компилируется, я вижу следующее окно:

WPF XML inside FlowDocumentReader

Как правильно отобразить XML внутри WPF FlowDocumentReader, но Я хочу, чтобы он был правильно с отступом, а не в двух столбцах?

РЕДАКТИРОВАТЬ: Я нашел тег, который он называется, для FlowDocumentReader, который вы помещаете в текст, где в теге должен появляться разрыв строки. Единственное, что я не мог понять, это как сделать отступ строки текста в теге абзаца. Да, вы можете сделать отступ для самого абзаца, но не можете поместить абзац в тег абзаца. Вы можете обернуть текст в тег span внутри тега абзаца, но не знаете, что с ним делать.

1 Ответ

0 голосов
/ 09 января 2020

Одна из перегрузок Inlines принимает строку. Вы можете получить красивый отступ XML с помощью XElement (при условии, что Paragraph имеет имя par):

var xml_string = 
    @"<?xml version='1.0' encoding='utf-8'?>
        <proekti>
            <sektorskiPateka>sektorski disk</sektorskiPateka>
            <naspateka>Network Access Storage (NAS) disk</naspateka>
        </proekti>";
var xml = XElement.Parse(xml_string);
par.Inlines.Add(xml.ToString());
...