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

标签 wpf richtextbox designer flowdocument

我从 RichTextBox help 复制了代码示例进入一个空的 WPF 窗口,如下所示:

<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 个字符?如何解决此问题?

最佳答案

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

文本使用所有可用空间,并在窗口大小发生变化时重新格式化。这基本上意味着我的代码没有真正的问题,但 Visual Studio 中的 WPF 设计器没有真正的问题。经过进一步调查,我发现在设计器中,该段落的宽度仅为零像素。

如果您还想在设计器中看到合理的显示,请为 Window、Grid 或 RichTextBox 指定宽度。但是,当然,文本将不再使用所有可用空间,而仅使用您定义的宽度,这可能不是您想要的。如果您希望宽度仅由设计器使用,而不是在运行时使用,请在 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 或其他一些宽度,这实际上会在设计器中正确显示,但正在运行的应用程序将仅限于该宽度宽度,这可能相当烦人(当窗口变大时,不会调整 FlowDocument 的大小)。

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

关于WPF RichTextBox 在 FlowDocument 中每行仅显示 1 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67613755/

相关文章:

C# 用户控件继承

c# - SQL 的替代方案作为客户端存储

c# - 在 RichTextBox 中突出显示花费的时间太长

C# Designer 序列化问题

c# - 自动生成设计师收藏品的代码隐藏名称

wpf - WPFToolkit RichTextBox-键入时更新文本颜色

c# - 尽管将 Visibility 设置为 Hidden 并将 WindowState 设置为 Minimized,WPF Window 仍然显示为可最大化的矩形

c# - 注入(inject)/模拟 WPF 路由鼠标单击事件

c# - 在具有长时间运行进程的 View 上使用 MVVM

C# 可以为链接抓取 webBrowser 控件吗?