Как изменить маржу абзаца в Windows Phone 8 XAML?

В нем есть RichTextBox с абзацем. Как изменить край внутреннего абзаца? Нет такого имущества. Настройка RichTextBox.Padding на "-12,0" помогает, но выглядит как уродливый хак.

Ответ 1

По умолчанию 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

Ответ 2

Как насчет этой опции: блокировка также уродливая, но все же:

<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>

Ответ 3

Другой взлом: (по крайней мере, для поля слева:)

<Paragraph xml:space="preserve">
    Hi from Paragraph
    Hi from Paragraph 2
</Paragraph>

Ответ 4

Вам просто нужно установить свойство 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>

Это приведет к следующему:
TextIndent of Paragraph