WPF-RichTextBox mit keine Breite festgelegt
Ich habe folgende XAML-code:
<Window x:Class="RichText_Wrapping.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1">
<Grid>
<RichTextBox Height="100" Margin="2" Name="richTextBox1">
<FlowDocument>
<Paragraph>
This is a RichTextBox - if you don't specify a width, the text appears in a single column
</Paragraph>
</FlowDocument>
</RichTextBox>
</Grid>
... Wenn Sie das Fenster in XAML können Sie sehen, dass, wenn Sie nicht geben Sie eine Breite für das Fenster, es bricht den text in einer einzigen Spalte, einen Brief zu einem Zeitpunkt. Gibt es etwas, was ich bin fehlt? Wenn es ein bekannter Mangel in der Kontrolle ist, gibt es einen workaround?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, die Bindung des flowdocument-Objekt Breite (in einer Richtung) auf die Breite des Containers RichTextBox.
Arbeitete für mich...
Dies ist ein bestätigter bug mit der WPF-RichTextBox-Steuerelement. Um es zu beheben, Binden die PageWidth des flowdocument-Objekt, um das RichTextBox-Breite, d.h.
BEARBEITEN:
Geben Sie das flowdocument-Objekt einen Namen, so dass Sie darauf zugreifen können in der code-behind und nie den Fluss Dokument im codebehind.
Den Ansatz in dieser Artikel für mich gearbeitet:
FormattedTextWidth + 20
um zu verhindern, dass die Verpackung.Kopiere ich klebte Ihren code und nicht in einer einzelnen Spalte, haben Sie eine Breite irgendwo, dass es klein ist? Vielleicht definiert der code hinter zum Beispiel.
Nur für das Protokoll, wie ich denke, in diesem thread fehlen einige Erklärungen, wie pro die warum: RichTextBox MeasureOverride Umsetzung ist so. Nicht ich nenne das einen bug, vielleicht auch nur ein schlechtes design Verhalten gerechtfertigt durch die Tatsache, dass wie oben erwähnt das flowdocument-Objekt ist nicht Billig zu Messen, aufgrund seiner Komplexität. Bottom line, vermeiden Sie unbegrenzte Breite Einschränkung durch Bindung MinWidth oder wickeln Sie es in ein limitierender container.
Bemerkte ich, dass ich nur hatte dieses Problem bei meinem Standard -
ScrollViewer
Stil explizit gesetztHorizontalScrollBarVisibility=Hidden
.Entfernen dieser setter (default-Wert ist
Hidden
sowieso) fixiert die einzelnen Spalte-Problem für mich in meinemRichTextBox
.HorizontalScrollBarVisibility=Disabled
(oder vollständig entfernen setter) bewirkt, dass die einzelnen Spalte Problem.