none
RichTextBox oder Textblock???? RRS feed

  • Frage

  • Hallo,

    ich lerne WPF an Hand der Erstellung einer App für Kundenverwaltung und setze mir da immer neue Aufgaben.

    Nun steht das Thema einem potentiellen Nutzer die Möglichkeit zu geben einen Freitext einzugeben, ähnlich diesem Text. Der Text soll dann in einem Datenbankfeld gespeichert werden. Später soll dieser Text aus der Datenbank abgerufen und bei Bedarf ergänzt werden. Dabei will ich eine Historie führen. Es soll also nachvollziehbar sein, welcher Text wann dazugekommen ist z.B. durch vorheriges Einfügen des aktuellen Datums über einen Button.

    Welches Control bietet sich dafür an? Die Richtextbox oder ein Textblock oder vielleicht was ganz anderes.

    Danke für Euren Input.

    Jürgen


    Mittwoch, 17. August 2016 15:57

Antworten

  • Hallo Jürgen,

    das einfachste ist auf jeden Fall die RichTextBox. Diese verwaltet das eingegebene als eine Instanz von FlowDocument. Dieses kannst du auch problemlos in XAML exportieren was dann wiederum in der Datenbank gespeichert werden kann. Das XAML kann natürlich auch ganz einfach zurück gewandelt werden.
    An Formatierungen hast du das meiste was man so braucht. Also Fett, Kursiv (usw.), Tabellen, Aufzählungen, Absätze usw.

    In WPF hast du theoretisch auch die Chance die RichTextBox von Windows Forms einzubinden, bei der würdest du RTF Code bekommen. Der kann IMO auch alles (wenn nicht sogar mehr) als WPFs FlowDocument. Aber es ist eben ein natives Windows Control und damit nicht immer so einfach zu benutzen.

    Konvertieren lassen sich die Formate in der Theorie auch. Aber teilweise mit erheblichem Aufwand verbunden.

    Im Internet gibt es außerdem diverse Anbieter für andere Controls die noch weitaus mehr können als das von mir genannte.

    Ich würde an deiner Stelle zu WPFs RichTextBox und einem FlowDocument greifen. Im Internet findet man diverse Beispiele wie man das Umwandeln zu XAML und wieder zurück machen kann. Beispielsweise hier.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 17. August 2016 18:00
    Moderator

Alle Antworten

  • Hallo Jürgen,

    das einfachste ist auf jeden Fall die RichTextBox. Diese verwaltet das eingegebene als eine Instanz von FlowDocument. Dieses kannst du auch problemlos in XAML exportieren was dann wiederum in der Datenbank gespeichert werden kann. Das XAML kann natürlich auch ganz einfach zurück gewandelt werden.
    An Formatierungen hast du das meiste was man so braucht. Also Fett, Kursiv (usw.), Tabellen, Aufzählungen, Absätze usw.

    In WPF hast du theoretisch auch die Chance die RichTextBox von Windows Forms einzubinden, bei der würdest du RTF Code bekommen. Der kann IMO auch alles (wenn nicht sogar mehr) als WPFs FlowDocument. Aber es ist eben ein natives Windows Control und damit nicht immer so einfach zu benutzen.

    Konvertieren lassen sich die Formate in der Theorie auch. Aber teilweise mit erheblichem Aufwand verbunden.

    Im Internet gibt es außerdem diverse Anbieter für andere Controls die noch weitaus mehr können als das von mir genannte.

    Ich würde an deiner Stelle zu WPFs RichTextBox und einem FlowDocument greifen. Im Internet findet man diverse Beispiele wie man das Umwandeln zu XAML und wieder zurück machen kann. Beispielsweise hier.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 17. August 2016 18:00
    Moderator
  • Hallo Tom,

    danke für die Antwort. in Richtung Datenbank hat es schon mal geklappt. An der Anderen Richtung bin ich gerade dran.

    Gruß

    Jürgen

    Montag, 22. August 2016 18:24
  • Hallo Tom,

    ist schon eine Weile her mit deiner Antwort. Ich hatte aber noch ein paar andere Probleme mit der Sache.

    Nun mache ich hier weiter und Frage mich wie die Methode toFlowDokument  aus dem genannten Beispiel angewendet wird.

    Ich lese mit DataReader in einer while Schleife den Datensatz ein und weise die Felder entsprechenden Variablen zu

    ncomChange.CommentsCompany = myReader["bemerkung"].ToString() ;

    "Bemerkung" beinhaltet ein xaml String.

    wenn ich im Nachgang die Methode

    ncomChange.CommentsCompany.toFlowDocument();

    ausführe, meckert VS, das die Methode nicht implementiert ist.

    Wo ist mein Fehler?

    Gruß

    Jürgen

    Freitag, 30. September 2016 06:57