如何在Windows Phone 8 XAML中更改段落边距?

11

有一个带有段落的 RichTextBox。

如何更改内部段落的边距?没有此类属性。

将 RichTextBox.Padding 设置为“-12,0”可以解决问题,但看起来像是一个丑陋的 hack。


1
这是WP8 XAML,而不是Windows8 XAML。这是我第一次遇到这种情况。我想应该有其他的方法解决。顶一下。 - user1228
4个回答

2

默认情况下,RichTextBox的根边框元素会有一个边距(12,0,12,0),因此左侧和右侧的空间将默认添加。如果您想改变这种行为,您需要自定义RichTextBox模板本身。

您可以使用此模板,并避免在左侧和右侧添加额外的边距。

<ControlTemplate TargetType="RichTextBox">
    <Grid Background="Transparent">
        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
            <ContentControl x:Name="ContentElement" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
        </Border>
    </Grid>
</ControlTemplate>

您好,Mawy:


1
这个选项怎么样:锁定也很丑,但仍然可以:
<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <RichTextBox>
                <Paragraph>
                    <InlineUIContainer>
                        <TextBlock x:Name="tbMargin" Margin="100,0,0,0"></TextBlock>
                    </InlineUIContainer>
                    Hi from Paragraph
                </Paragraph>               
            </RichTextBox>           
        </StackPanel>

1
另一个hack:(至少对于左边距 :))
<Paragraph xml:space="preserve">
    Hi from Paragraph
    Hi from Paragraph 2
</Paragraph>

1

您只需要设置段落的TextIndent属性即可。我来给您展示一个样例:

    <RichTextBox>
        <FlowDocument>
            <Paragraph TextIndent="6"><Run Text="Paragraph 1"/></Paragraph>
            <Paragraph TextIndent="12"><Run Text="Paragraph 2"/></Paragraph>
            <Paragraph TextIndent="18"><Run Text="Paragraph 3"/></Paragraph>
            <Paragraph TextIndent="24"><Run Text="Paragraph 4"/></Paragraph>
        </FlowDocument>
    </RichTextBox>

这将导致以下结果:
段落的文本缩进

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接