CTRL+A 重置富文本框/流文档中的段落边距
Posted
技术标签:
【中文标题】CTRL+A 重置富文本框/流文档中的段落边距【英文标题】:CTRL+A resets Paragraph Margins in Rich Text Box/Flow Document 【发布时间】:2021-03-31 18:58:27 【问题描述】:<RichTextBox x:Name="TextEntry">
<FlowDocument>
<Paragraph Margin="0,0,0,0"/>
</FlowDocument>
</RichTextBox>
这是我当前 XAML 的基本布局。当我第一次启动我的应用程序时,它运行良好。但是,在按 CTRL+A 后,边距似乎重置了,并且按一下 Enter
似乎会在段落中添加两行。
有什么方法可以对付这种行为吗?或者我可能会错误地更改边距?
我尝试在 C# 中添加实现以覆盖 CTRL+A 的默认行为,并提前将事件注册为已处理,以防止在后台进行任何奇怪的操作,唉,这并没有让我到任何地方。
【问题讨论】:
只是一个猜测,但 Paragraph 不是您控件的内容,因此被您的输入更改了吗?如果您为父元素 (FlowDocument) 设置边距属性和/或减少 RitchTextBox 的填充,该怎么办? @svin83 段落在输入时不会改变,只有在按下 CTRL+A 时才会改变。有点奇怪。但遗憾的是 FlowDocument 没有 Margin 属性,并且 RTB 的边距不应该被摆弄以保持在它的高度/宽度内。 RTB 填充,而不是边距。 @svin83 很遗憾,没有。没有酱。我想知道按 Backspace 的 CTRL+A(然后不相关)是否最终会删除段落并将原始文本存储在 FlowDocument 中并创建一个新的样板段落。 【参考方案1】:我发现了问题。
CTRL+A+BACKSPACE 正在删除 整个 段落对象,该对象是静态样式的。在新输入后,原始文本刚刚被放入一个全新的段落中。这是一个解决方案:
<RichTextBox>
<RichTextBox.Resources>
<Style TargetType="x:Type Paragraph">
<Setter Property="Margin" Value="0"/>
</Style>
</RichTextBox.Resources>
<FlowDocument>
<Paragraph Margin="0,0,0,0"/>
</FlowDocument>
</RichTextBox>
【讨论】:
以上是关于CTRL+A 重置富文本框/流文档中的段落边距的主要内容,如果未能解决你的问题,请参考以下文章