2016-03-30 6 views
0

Ich habe eine WPF-Anwendung, in der ich eine TextBox in eine RichTextBox konvertieren möchte. Ich habe bereits die folgenden Codezeilen geschrieben:Wie arbeite ich mit RichTextBox in WPF

  <RichTextBox> 
       <FlowDocument> 
        <Paragraph> 
         <Run Text="{Binding GeneralDescription}" /> 
        </Paragraph> 
       </FlowDocument> 
      </RichTextBox> 

Dies hat den Effekt, dass die Zeichenfolge Allgemeine angezeigt und ich kann es bearbeiten und formatieren. Nun habe ich das Problem, dass wenn ich einen Teil des Textes markiere, ihn formatiere (z. B. fett formatiere), das Dokument speichere und das Dokument wieder öffne, nur der Teil des Textes, bis die Formatierung angezeigt wird. Ich bin mir nicht sicher, ob der Fehler innerhalb der Anzeige oder innerhalb der Speicherung liegt. In jedem Fall ist es nervig. Wie kann ich es zum Laufen bringen? Ist es ein Problem, dass GeneralDescription vom Typ String ist?

Vielen Dank im Voraus.

+0

Haben Sie in Ihrer Datenbank überprüft, um zu sehen, was gerettet wurde? – ChrisF

+0

Ich denke, es wird mehrere Läufe erstellen. Standart - Formatiert - Standart. Scheint so, als würde es nur die erste nehmen ... –

+0

Speichern Sie das Flowdokument? Wie formatieren Sie den Text? Wenn Sie das Flowdokument speichern, sollte es funktionieren .... – Johannes

Antwort

3

Das Problem ist, dass Ihre string Daten nur einfachen Text enthält und Ihre XAML design tags in es wird beim Laden ignoriert werden.


Textbox und RichTextBox sind Bedienelemente mit einem ganz anderen Verhalten.

Das Problem ist auch, dass RichTextBox diese Art der Bindung nativ nicht unterstützen. Ein Dokument auf einer RichTextBox ist keine Abhängigkeitseigenschaft, deshalb.

Persönlich verwende ich David Veeneman erweiterte Kontrolle für Fälle wie diese.


zum Speichern oder eine FlowDocument direkt Laden verwenden:

FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite); 
XamlWriter.Save(myFlowDocumentObject, fs); 

und

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); 
FlowDocument myFlowDocumentObject = XamlReader.Load(fs) as FlowDocument; 

By the way, die Run Tag-Daten teilweise unterstützt, ist verbindlich.

  • Einseitige Datenbindung wird vollständig unterstützt. Ein Lauf kann an eine Datenquelle gebunden werden und der Inhalt des Laufs spiegelt den Wert dessen wider, an den er gebunden ist. Der gebundene Lauf empfängt und zeigt alle Änderungen an, die in der Datenquelle auftreten.

  • Zwei-Wege-Datenbindung wird teilweise unterstützt. Wenn ein gebundener Lauf über Aufrufe an das WPF-Eigenschaftensystem aktualisiert wird, wird die Datenquelle, an die der Lauf gebunden ist, die Änderungen an dem Lauf wiedergeben. Auf der anderen Seite Hand, Wenn ein gebundener Lauf über eine RichTextBox oder das Textobjekt Modell, aktualisiert wird, verliert der Lauf seine Bindung.