2017-09-19 18 views
0

RichTextBoxコントロールを使用して、ユーザーがテキストの特定の部分(およびそれらの部分のみ)を編集できるようにしようとしています。WPF RichTextBoxトークン化編集

私のアプローチは、InlineUIContainerタグに含まれるTextBoxタグをFlowDocumentに含めることです。以下のコードは、私がこれまでに成し遂げてきたことを示しています。

<RichTextBox IsDocumentEnabled="True"> 
    <FlowDocument> 
     <Paragraph> 
      <InlineUIContainer > 
       <TextBox Text="Field" MinWidth="65"></TextBox> 
      </InlineUIContainer> 
      <InlineUIContainer> 
       <TextBlock Text="Some text..." ></TextBlock> 
      </InlineUIContainer> 
     </Paragraph> 
    </FlowDocument> 
</RichTextBox> 

これに伴う問題は、ユーザーが悪化し、彼らは任意のテキストを編集することができます...それらをFlowDocument内の要素を選択して削除することが可能であることですRun要素の一部、またはドキュメント内のテキストを切り取り/貼り付けることさえできます。

私はRichTextBoxIsReadOnly="True"を設定する考えがありましたが、TextBoxesの編集も無効になっています...また、PreviewKeyDownも処理できますが、すべての状況に対応できません(右クリックして貼り付ける)。

代わりの解決策があるのか​​、それとも代替ライブラリまたはサードパーティコントロールが役立つのか疑問に思っていました。 truefalseTextBoxIsReadOnlyプロパティを設定し、RichTextBoxIsReadOnlyプロパティについて

答えて

2

方法:?

<RichTextBox IsDocumentEnabled="True" IsReadOnly="True"> 
    <FlowDocument> 
     <Paragraph> 
      <InlineUIContainer > 
       <TextBox Text="Field" MinWidth="65" IsReadOnly="False"></TextBox> 
      </InlineUIContainer> 
      <InlineUIContainer> 
       <TextBlock Text="Some text..." ></TextBlock> 
      </InlineUIContainer> 
     </Paragraph> 
    </FlowDocument> 
</RichTextBox> 
+0

は、それが動作信じることができません:Dのおかげで。 –

+0

ニース。 'IsReadOnly'が継承されたプロパティであるとは思っていませんでした。 –

関連する問題