Защита текста в WPF richtextbox
У меня есть сгенерированный FlowDocument, который я хотел бы, чтобы пользователи могли добавлять и редактировать в некоторой степени, но большая часть сгенерированного контента не должна быть редактируемой.
Кто-нибудь знает надежный способ защиты текста в RichTextBox?
Что я уже пробовал:
Я пробовал ловить события MouseDown на отдельных блоках документа потока, и это, кажется, работает большую часть времени, но если я несколько раз щелкну и перетащу мышью, то в конечном итоге смогу выделить часть "защищенного" текста. Любопытно, что когда это происходит, Snoop не показывает никаких дополнительных событий, и я не вижу никакой закономерности в том, когда это происходит, а когда нет.
На самом деле это не было бы хорошим решением, даже если бы оно работало так, как задумано, потому что это не помешало бы перетаскиванию подсветки из соседнего незащищенного блока.
В разметке RTF есть атрибут protect, но я не вижу никакого способа добавить его при добавлении блока в код, и идея манипулировать RTF-кодом с помощью регулярных выражений звучит как пожизненная задача. Я подозреваю, что мне придется разбивать защищенные и незащищенные части документа на отдельные элементы управления, но это было бы крайне неопрятно и все равно оставило бы проблемы с областями, где мне просто нужно защищать части текста, а не целые блоки или абзацы.