Как я могу сделать RichTextBox
без полей, границ, отступов и т. Д.?Другими словами, отображать содержимое так же, как TextBlock
, не так ли?Я пробовал это:
<RichTextBox Margin="0" Padding="0" Grid.Row="0" BorderThickness="0" >
<FlowDocument >
<Paragraph>LLL</Paragraph>
</FlowDocument>
</RichTextBox>
<TextBlock>LLL</TextBlock>
Но результат все равно не то, что я хочу:
![enter image description here](https://i.stack.imgur.com/oKGJ6.png)
До содержимого документа еще есть место (итакже может быть после, в верхней или нижней части документа ...).Как я могу удалить его?
Если вам интересно, зачем мне это нужно: я пытаюсь ответить HB на мой вопрос Создать редактор гитарных аккордов в WPF работать с кернингом и я не хочу иметь неестественный пробел между символами.
Редактировать
Так что это не 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 edit, он работает.Тем не менее, я не думаю, что это очень ясно (иметь свойство зависимости, потому что мне нужно сохранить значение PagePadding
в 0). Я думаю, что это обходной путь. Если у кого-то есть лучшее решение, поделитесь им.
Очевидно, что "изменение PagePadding
" FlowDocument
на 0,5
является ошибкой.Если у кого-то есть учетная запись MSDN, было бы хорошо, если бы он сообщил об этой ошибке.