Создание (и сохранение) строк только для чтения в AvalonEdit
Каков надежный способ сделать определенные строки доступными только для чтения в элементе управления AvalonEdit? Пользователи могут изменять тела некоторых методов в файле шаблона C# или VB, но не более того. Когда пользователи добавляют или удаляют строки, состояние readonly для каждой строки должно быть неповрежденным, то есть блоки readonly ниже отредактированного содержимого должны соответственно перемещаться вверх и вниз.
Я использую AvalonEdit в WPFHost на winforms.
1 ответ
Вы можете установить textEditor.TextArea.ReadOnlySectionProvider
для реализации IReadOnlySectionProvider
,
AvalonEdit содержит реализацию TextSegmentReadOnlySectionProvider
что позволяет маркировать сегменты только для чтения. Эти сегменты только для чтения будут перемещаться, когда пользователь добавляет / вставляет текст.TextSegmentReadOnlySectionProvider
не позволяет вам предотвратить вставки в самом начале и конце документа (так как эти позиции никогда не находятся внутри какого-либо сегмента), но вы можете наследовать от класса и переопределять CanInsert()
чтобы исправить этот особый случай.