Autor Beitrag
DarkWinter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 10.08.21 16:07 
Hi

möchte mir zum ersten Mal ein Flow-Dokument zusammenbauen - es wird auch im FlowDocumentScollViewer angezeigt

bzw. hab es geschafft es auch auszudrucken --> aber mit der Formatierung klappt es irgendwie nicht - hab schon mehrere Seiten abgeklappert

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
FlowDocument doc = new FlowDocument();

Paragraph p = new Paragraph(new Run("Orte"));
p.FontSize = 38;
p.TextAlignment = TextAlignment.Center;
            
doc.Blocks.Add(p);

p.Foreground = Brushes.Red;
for (int ra = 0; ra < OrteStr.Length; ra++)
{
    p = new Paragraph();
    p.FontSize = 28;
    p.FontStyle = FontStyles.Normal;

    p.TextAlignment = TextAlignment.Center;
    p.Inlines.Add(new Run(OrteStr[ra]));

    doc.Blocks.Add(p);
}

fdViewer.Document = doc;


Vom Verständnis her ist ein Paragraph ein Absatz also ein Block mit mehreren Zeilen.
Wenn ich die Zeile doc.Blocks.Add(p); außerhalb der Schleife platziere wird nur der letzte Eintrag ins Flow Dokument eingefügt.

Lasse ich es so wie oben, haben die einzelnen Zeilen einen großen Abstand - so als wenn jede Zeile ein Absatz ist (bzw. zwei CR eingefügt werden).
Wie kann ich den Text untereinander platzieren bzw. den Abstand der Zeilen zueinander einstellen?
Oder anders gefragt: Wie kriege ich einen Absatz mit mehreren Zeilen?

Gruß

Moderiert von user profile iconTh69: Beitragsformatierung (Code) überarbeitet.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 10.08.21 16:46 
Hallo,

hast du schon Übersicht über Flussdokumente durchgearbeitet?
Teste mal das 2. Beispiel ("Bereich") unter "Flussbezogene Klassen" / "Blockabgeleitete Klassen".

Wenn du jedoch nur einen Absatz haben möchtest, dann darfst du auch nur einen Paragraph hinzufügen (also p = new Paragraph() vor der Schleife) und innerhalb der Schleife nur den Text (mittels p.Inlines.Add(...)) erzeugen (und für Zeilenumbrüche LineBreak verwenden).