2016-08-07 18 views
1

Ich bin ziemlich neu in WPF und habe ein Problem festgestellt.WPF Lesen und Schreiben RichTextBox Text

Ich habe eine Rich-Text-Box und ich setze es Text. Dann, wenn sich der Rich-Texbox-Text ändert (mit Event-Handler), muss ich prüfen, ob es gleich dem ursprünglichen Text war.

Aber auch wenn sich der Text nicht geändert hat, sagt der Code, dass er aufgrund einer neuen Zeile beim Lesen des Textes erscheint.

Dies ist im Grunde, was ich tue: (eine simiplified Version das Problem zeigt)

//Create a new text box 
RichTextBox r = new RichTextBox(); 

//Write Text "Hello World" to the rich text box 
r.Document.Blocks.Clear(); 
r.Document.Blocks.Add(new Paragraph(new Run("Hello World"))); 

//Read Text "Hello World" from rich text box 
string textBoxText = new TextRange(r.Document.ContentStart, r.Document.ContentEnd).Text; 
Console.WriteLine("\"" + textBoxText + "\""); 

ich erwarten würde, um zu sehen "Hallo Welt" in der Konsole, sondern es gibt:

"Hello World 
" 

Weil es danach eine neue Zeile gibt, verursacht es Probleme in meinem Code. Gibt es eine bessere Möglichkeit, die RichTextBox zu lesen und zu schreiben, um dies zu vermeiden?

+0

Ich frage mich, warum Sie eine RichTextBox verwenden würden? Ich benutze immer eine TextBox mit Textumhüllung. – Snovva1

+0

Ich muss auch verschiedene Teile des Textes, die es enthält, einfärben – WPFHelp

Antwort

0

Ich habe entschieden, eine RichTextBox von Windows Forms innerhalb des WPF-Fensters anstelle der standardmäßigen WPF RichTextBox zu verwenden.

Es ist ein bisschen komplizierter, mit XAML zu verwenden, also setze ich hauptsächlich seine Eigenschaften, wenn das Fenster im Code-Behind geöffnet wird.

Es hat alle meine Probleme bisher gelöst.

Weitere Informationen:

https://msdn.microsoft.com/en-us/library/ms751761(v=vs.110).aspx

https://www.simple-talk.com/dotnet/.net-framework/mixing-wpf-and-winforms/

(Ich werde dies als Antwort nicht aus, als es das Problem nicht lösen, wenn Sie eine WPF RichTextBox verwenden möchten, und nicht WinForms)

Bearbeiten: Eigentlich ist es am besten, diese Methode zu vermeiden, da das WinForms-Steuerelement über alle WPF-Steuerelemente gezeichnet wird. Das hält mich davon ab, Dropdown-Menüs in wpf zu verwenden. ... noch auf der Suche nach Antworten !!!

Edit:

Ich versuchte this answer zu verwenden, um meine wpf Dropdown-Menüs über dem WinForms RichTextBox zu ziehen. Es hat funktioniert, aber die Ausrichtung ist falsch gelaufen.

Jetzt habe ich sowohl WPF und WinForms RichTextBox aufgegeben und mit AvalonEdit gegangen (was erstaunlich ist). Es wurde ursprünglich für einen Code-Editor entwickelt, funktioniert aber für jede Art von RichTextBox-Ersatz.

Ich verwendete eine Mischung aus this und this zum Ändern der Farbe von Teilen des Textes.