Ich zögere, dies zu schreiben, wie ich bin sicher, dass es ein besserer Weg, aber da niemand anders geantwortet hat ....
Ein Fluss Dokument Section
erscheint Absätze einzuzuwickeln mit Leerzeichen equivilent zu der Absatz LineHeight
.
LineHeight
kann nicht 0 sein, aber es kann sehr klein sein. Einstellung LineHeight
auf der Section
wird Leerzeichen um alle Absätze entfernen.
<FlowDocumentScrollViewer>
<FlowDocumentScrollViewer.Resources>
<Style TargetType="Paragraph">
<Setter Property="Background" Value="LightBlue" />
</Style>
</FlowDocumentScrollViewer.Resources>
<FlowDocument>
<Section LineHeight="0.1">
<Paragraph>1</Paragraph>
<Paragraph>2</Paragraph>
<Paragraph/>
<Paragraph>4</Paragraph>
<Paragraph>5</Paragraph>
</Section>
</FlowDocument>
</FlowDocumentScrollViewer>
LineHeight
wie diese Einstellung wird in der Regel nicht den Text in den Absätzen beeinflussen, da die Standard-LineStackingStrategy
stattdessen die Höhe der Schriftart verwendet. Beachten Sie, dass der leere Absatz immer noch Höhe hat.
Man könnte denken, LineHeight
nur auf dem leeren Absatz Einstellung funktionieren würde, aber Section
immer noch die Leerzeichen des vorhergehenden Absatzes ehrt. Da der vorherige Absatz normal ist LineHeight
, erhalten Sie immer noch die Marge.
Also, um Ihre leeren Absatz vollständig zu entfernen, müssen Sie LineHeight
auf dem Rohling und dem vorhergehenden Absatz setzen und Ihre leeren Absatz erzählen die LineHeight
als Blockhöhe zu verwenden:
<FlowDocumentScrollViewer>
<FlowDocumentScrollViewer.Resources>
<Style TargetType="Paragraph">
<Setter Property="Background" Value="LightBlue" />
</Style>
</FlowDocumentScrollViewer.Resources>
<FlowDocument>
<Section>
<Paragraph>1</Paragraph>
<Paragraph LineHeight="0.1">2</Paragraph>
<Paragraph LineHeight="0.1" LineStackingStrategy="BlockLineHeight"/>
<Paragraph>4</Paragraph>
<Paragraph>5</Paragraph>
</Section>
</FlowDocument>
</FlowDocumentScrollViewer>
Ich habe versucht, einen Trigger, der dies automatisch für leere Absätze tun würde, aber leider Paragraph.Inlines.Count
ist keine DependencyProperty, und versuchen, es zu verwenden, um leere Absätze zu erkennen ist unzuverlässig, je nachdem, wenn der Absatz ausgefüllt wird.
Gibt es einen Grund, warum Sie 4 Absätze hart codieren, wenn Sie nach Ihrer Frage gehen, könnten sie leer sein? Ein Benutzer wäre nicht in der Lage, dem Absatz etwas hinzuzufügen, wenn er trotzdem gequetscht wurde, sollte er überhaupt vorhanden sein? Wenn die Absätze nur gelesene Informationen von irgendwo anders anzeigen, ist es vielleicht besser, die Absätze nach Bedarf hinzuzufügen. – kenjara
In der Tat dachte ich das Gleiche. Warum nicht leere Absätze auf View-Model-Ebene filtern? – Maverik
Meine Frage ist eine vereinfachte Version meines Problems. Der Absatz enthält nicht genau nichts, sie haben mehrere Container. Aber ich kann mit diesem Teil des Problems umgehen, ich muss nur wissen, wie man einen Absatz vollständig versteckt, da er keine "Visibility" -Eigenschaft hat. –