WPF RichTextBox 在 FlowDocument 中每行仅显示 1 个字符的文本

WPF RichTextBox shows text in FlowDocument only 1 character per line

我将 RichTextBox help 中的代码示例复制到一个空的 WPF window 中,如下所示:

<Window x:Class="RichTextBoxWidthProblem.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow">
    <Grid>
        <RichTextBox>
            <FlowDocument>
                <Paragraph>
                    This is flow content and you can
                    <Bold>edit me!</Bold>
                </Paragraph>
            </FlowDocument>
        </RichTextBox>
    </Grid>
</Window>

结果看起来很奇怪:

为什么每行只写了 1 个字符,我该如何解决这个问题?

在花了一天时间试图找到这个问题的原因后,我只是 运行 应用程序,结果如下所示:

文本使用所有可用的 space 并在 Window 大小更改时重新格式化。这基本上意味着我的代码没有真正的问题,但是 Visual Studio 中的 WPF 设计器。经过进一步调查,我发现在设计器中,段落只有零像素宽。

如果您还想在设计器中看到合理的显示,请为 Window、Grid 或 RichTextBox 指定一个 Width。但是,当然,文本将不再使用所有可用的 space,而只使用您定义的宽度,这可能不是您想要的。如果您希望宽度仅供设计者使用,但不在 运行 期间使用,请在 Width:

之前添加 'd:'
<Window x:Class="RichTextBoxWidthProblem.MainWindow"
        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"
        mc:Ignorable="d"
        Title="MainWindow" d:Width="333">

请在将其标记为重复之前先阅读此内容

我有一个不幸的经历,一个问题经常被标记为重复,而实际上并没有。我知道有几个关于 FlowDocument 不使用可用宽度的问题,但请注意,大多数建议设置 ColumnWidth 或其他宽度,这实际上会在设计器中正确显示,但 运行ning 应用程序将被限制为该宽度,这可能会很烦人(当 Window 变大时不会调整 FlowDocument 的大小)。

因此,重要的是 Whosebug 上的答案解释了在这种情况下它只是一个设计者问题,而不是真正的宽度问题。