Как я могу сделать RichTextBox
без полей, границ, пропусков и т.д.? Другими словами, чтобы отображать контент так же, как TextBlock
, это так? Я пробовал это:
<RichTextBox Margin="0" Padding="0" Grid.Row="0" BorderThickness="0" >
<FlowDocument >
<Paragraph>LLL</Paragraph>
</FlowDocument>
</RichTextBox>
<TextBlock>LLL</TextBlock>
Но результат получается по-прежнему не так, как я хочу:
По-прежнему есть некоторое пространство перед содержимым документа (а также, возможно, после, сверху или снизу документа...). Как его удалить?
Если вам интересно, зачем мне это нужно: я пытаюсь сделать H.B. ответ на мой вопрос Создать редактор гитарных аккордов в 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>
И я думал, что будет легко ответить на вопрос... Интересное наблюдение:, когда у меня установлен шаблон, и я установил PagePadding="0"
на FlowDocument
, он отображает макет, который я хочу в дизайнере VisualStudio - , пока я не запустил демонстрацию. В демо снова не так... И когда я закрываю демо, он снова ошибается в дизайнере. Это небольшая ошибка VS или она на самом деле настроена на правильную компоновку на некоторое время, но затем что-то изменяет значение PagePadding
на некорректное значение?
Edit # 2
Даниэль Роуз отредактировал ответ, также не работает для меня. Это 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); }
}
Без изменений результата. Осталось место.
Edit # 3
После добавления двусторонней привязки, поскольку Даниэль Роуз предложил в своем редакторе las, он работает. Тем не менее, я действительно не думаю, что это очень ясно (иметь свойство зависимости, потому что мне нужно поддерживать PagePadding
при значении 0). Я думаю, что это обходное решение. Если у кого-то есть лучшее решение, поделитесь им.
Очевидно, что "изменение PagePadding
" от FlowDocument
до 0,5
является ошибкой. Если у кого-то есть учетная запись MSDN, было бы неплохо, если бы они сообщили об этой ошибке.