2017-09-19 3 views
0

Ich versuche, den Benutzer zu ermöglichen, bestimmte Teile eines Textes (und nur diese Teile) mit einem RichTextBox Steuerelement zu bearbeiten.WPF RichTextBox tokenisierte Bearbeitung

Mein Ansatz besteht aus TextBox Steuerelemente in InlineUIContainer Tags in einem FlowDocument enthalten. Der folgende Code zeigt, was ich bisher erreicht habe:

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

Das Problem dabei ist, dass der Benutzer in der Lage ist, die Elemente in der FlowDocument und löschen Sie sie wählen ... schlechter können sie einen beliebigen Text bearbeiten, ist Teil eines Run Elements oder sogar ausschneiden/einfügen Text im Dokument.

Ich hatte die Idee, die IsReadOnly="True" auf RichTextBox zu setzen, aber das deaktiviert auch TextBoxen bearbeitet ... Auch ich könnte die PreviewKeyDown aber das kann nicht jede Situation behandeln (d. H. Mit der rechten Maustaste und drücken Sie auf Einfügen).

Ich frage mich, ob es eine alternative Lösung oder sogar eine alternative Bibliothek oder Drittanbieter-Kontrolle, die hilft.

Antwort

2

Wie über die IsReadOnly Eigenschaft des TextBox-false und die IsReadOnly Eigenschaft des RichTextBox zu true Einstellung:

<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

Kann nicht glauben, es funktioniert: D Danke. –

+0

Schön. Ich hätte nicht erwartet, dass "IsReadOnly" eine geerbte Eigenschaft ist, und doch ist es. –