WPF: Как сделать RichTextBox похожим на TextBlock?

Как сделать RichTextBox без полей, границ, отступов и т. Д.? Другими словами, чтобы отображать контент так же, как TextBlock ? Я пробовал следующее:


    
        LLL
    

LLL

Но результат все еще не тот, который мне нужен:

enter image description here

Есть еще некоторое пространство перед содержимым документа (а также, возможно, после, вверху или внизу документа ...). Как его удалить?


Если интересно, зачем мне это: пытаюсь сделать HB ' s ответ на мой вопрос Создайте редактор гитарных аккордов в WPF для работы с кернингом , и я не хочу, чтобы между символами было неестественное пространство.


Редактировать

Так что это не ControlTemplate , по крайней мере не только потому, что следующий код даст точно такой же результат (как на картинке выше):


    
        
            
        
    
    
        LLL
    

И я подумал, что на этот вопрос будет легко ответить .. . Интересное наблюдение: когда у меня есть набор шаблонов и я установил PagePadding = "0" в FlowDocument , он отображает нужный мне макет в дизайнере VisualStudio. - , пока я не запустил демо . В демке опять не так ... А когда закрываю демку, в дизайнере опять не так. Это небольшая ошибка VS, или она на какое-то время действительно настроена на правильный макет, но затем что-то меняет значение PagePadding обратно на неправильное значение?


Правка №2

Отредактировано Дэниелом Роузом ответ тоже не работает у меня. Это XAML:


    hello

И это в коде:

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

После добавления двусторонней привязки, как предложил Дэниел Роуз в своей последней редакции, она работает. Тем не менее, я не думаю, что это очень ясно (иметь свойство зависимости, потому что мне нужно сохранить значение 0 для PagePadding ). Я думаю, что это обходной путь - ошибка взлома. Если у кого-то есть лучшее решение, поделитесь им.

Очевидно, что «изменение PagePadding » из FlowDocument на 0,5 является ошибкой. Если у кого-то есть учетная запись MSDN, было бы хорошо, если бы они сообщили об этой ошибке.

13
задан Community 23 May 2017 в 10:30
поделиться