【发布时间】:2011-08-14 19:15:56
【问题描述】:
我怎样才能使RichTextBox 没有边距、边框、填充等?换句话说,以与TextBlock 相同的方式显示内容吗?我试过这个:
<RichTextBox Margin="0" Padding="0" Grid.Row="0" BorderThickness="0" >
<FlowDocument >
<Paragraph>LLL</Paragraph>
</FlowDocument>
</RichTextBox>
<TextBlock>LLL</TextBlock>
但是产生的结果还是不是我想要的:
在文档内容之前仍有一些空间(也可能在文档顶部或底部之后......)。如何删除它?
如果您对我为什么需要这个感兴趣:我试图让H.B.'s answer 对我的问题Create guitar chords editor in WPF 与kerning 一起使用,并且我不想在字符之间有不自然的空间。
编辑
所以它不是ControlTemplate 至少不仅如此,因为以下代码将产生完全相同的结果(如上图所示):
<RichTextBox Margin="0" Padding="0" Grid.Row="0" BorderThickness="0">
<RichTextBox.Template>
<ControlTemplate>
<ScrollViewer Padding="0" Margin="0" x:Name="PART_ContentHost"/>
</ControlTemplate>
</RichTextBox.Template>
<FlowDocument PagePadding="0">
<Paragraph Padding="0" Margin="0" >LLL</Paragraph>
</FlowDocument>
</RichTextBox>
我认为这将是一个容易回答的问题... 有趣的观察:当我设置了模板并在FlowDocument 上设置了PagePadding="0" 它显示了我想要的布局 在 VisualStudio 设计器中 - 直到我运行演示。在演示中又错了……当我关闭演示时,设计器又错了。这是 VS 的一个小错误,还是它实际上设置为正确的布局一段时间,但随后将 PagePadding 的值更改回某个错误值?
编辑#2
Daniel Rose 的编辑答案也不适合我。这是 XAML:
<FlowDocument PagePadding="{Binding PagePadding}">
<Paragraph x:Name="paragraph" Padding="0"
TextIndent="0" Margin="0,0,0,0" >hello</Paragraph>
</FlowDocument>
这是在代码中:
public static DependencyProperty PagePaddingProperty =
DependencyProperty.Register("PagePadding", typeof(Thickness), typeof(EditableTextBlock),
new PropertyMetadata(new Thickness(0)));
public Thickness PagePadding {
get { return (Thickness)GetValue(PagePaddingProperty); }
set { SetValue(PagePaddingProperty, value); }
}
结果没有变化。剩余空间。
编辑#3
按照 Daniel Rose 在他的 las 编辑中建议的那样添加双向绑定后,它就可以工作了。我仍然认为它不是很清楚(具有依赖属性,因为我需要将PagePadding 保持在 0 值)。 我认为这是一个 hack - bug 解决方法。如果有人有更好的解决方案,请分享。
显然,将FlowDocument 的PagePadding 更改为0,5 是一个错误。如果有人有 MSDN 帐户,如果他们报告此错误会很好。
【问题讨论】:
标签: c# .net wpf richtextbox padding