如何解决WPF RichTextBox 显示 FlowDocument 中的文本每行仅 1 个字符
我将代码示例从 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 设计器。经过进一步调查,我发现在设计器中,段落的宽度仅为 0 像素。
如果您还想在设计器中看到合理的显示,请为 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 上有一个答案,说明在这种情况下它只是一个设计问题,而不是真正的宽度问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。