J'essaie de permettre à l'utilisateur de modifier des parties spécifiques d'un texte (et seulement ces parties) en utilisant un contrôle RichTextBox
.WPF RichTextBox édition tokenized
Mon approche consiste à utiliser TextBox
contrôles contenus dans InlineUIContainer
dans un FlowDocument
. Le code ci-dessous montre ce que j'ai accompli jusqu'à présent:
<RichTextBox IsDocumentEnabled="True">
<FlowDocument>
<Paragraph>
<InlineUIContainer >
<TextBox Text="Field" MinWidth="65"></TextBox>
</InlineUIContainer>
<InlineUIContainer>
<TextBlock Text="Some text..." ></TextBlock>
</InlineUIContainer>
</Paragraph>
</FlowDocument>
</RichTextBox>
Le problème est que l'utilisateur est en mesure de sélectionner les éléments dans le FlowDocument
et les supprimer ... pire, ils peuvent modifier tout texte qui est partie d'un élément Run
ou même couper/coller du texte dans le document. J'ai eu l'idée de définir le IsReadOnly="True"
sur le RichTextBox
mais cela désactive également les TextBoxes à éditer ... Aussi je pourrais manipuler le PreviewKeyDown mais qui ne peut pas manipuler chaque situation (c'est-à-dire: Clic droit et appui sur coller).
Je me demandais s'il y a une solution alternative ou même une bibliothèque alternative ou un contrôle tiers qui aide.
ne peux pas croire cela fonctionne: D Merci. –
Nice. Je ne m'attendais pas à ce que 'IsReadOnly' soit une propriété héritée, et pourtant c'est le cas. –