none
Begrenzung der maximalen Zeilen in einem TextBlock RRS feed

  • Frage

  • Hallo zusammen,

    ich stehe gerade vor einem Problem welches ich auf direktem Wege lösen möchte.

    Ich benutze verschiedene TextBlöcke (keine TextBoxen!) die TextWrapping unterstützen. Jetzt möchte ich jedoch, dass nach max. 2 Zeilen Schluss ist (TextTrimming ist aktiviert).

    Da alle TextBlöcke von mir schon eine eigene Ableitung haben, so wäre es schön, wenn man mit wenigen Zeilen SourceCode diese mit diesen Eigenschaften erweitern könnte. Vielleicht hat jemand eine Lösung für mich.

    Problematisch ist hier, dass ich nie genau sagen kann wie groß die FontSize ist und ich so mit einer MaxHeight arbeiten könnte.

    Grüße

    JP One


    Dienstag, 17. September 2013 06:11

Antworten

  • Hallo,

    ja jetzt sehe ich auch, dass ich mich da verlesen habe :)

    Nun da TextBlock keine LineCount property besitzt muss man sich da was anderes einfallen lassen.

    Dennoch musst du sowieso auf Text Input hören, danach kannst du z.b. folgendes ausführen.

    char[] chars = Environment.NewLine.ToCharArray();
    
    string[] lines = tb.Text.Split(chars);

    Und so kannst du herausfinden wie viele Zeilen du hast.


    • Bearbeitet dev hedgehog Donnerstag, 26. September 2013 11:19
    • Als Antwort markiert JP One Montag, 30. September 2013 08:38
    Donnerstag, 26. September 2013 08:10

Alle Antworten

  • Hallo JP One,

    Du kannst das machen mit TextWrapping = "Wrap", TextTrimming = "CharacterEllipsis" und Code der die Height Parameter einstellt abhaengend von der Grosse des FontSize.

    Gruss,

    Ionut


    Ionut Duma, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 18. September 2013 14:58
    Moderator
  • Halloi Ionut,

    ja das wäre eine Möglichkeit, allerdings ist es so, dass ich die Zeilenabstände nicht weiß da teilweise andere Schriftarten eingesetzt werden und diese unterschiedlich sind. Dafür müsste ich den ganzen Font irgendwie auseinander nehmen. Dies halte ich für nicht so sinnvoll, da es eher das Control selbst mitbringen sollte.

    Grüße

    JP One

    Donnerstag, 19. September 2013 06:31
  • Es gibt eine property die heißt: LineCount

    Da du ja schon sowieso deine eigene TextBox hast, die von TextBox ableitet, kannst du gleich auf TextChanged event hören und wenn LineCount > 2 dann erlaubst du einfach keine weitere Eingabe


    • Bearbeitet dev hedgehog Donnerstag, 26. September 2013 08:11
    Donnerstag, 26. September 2013 06:57
  • Hallo dev hedgehog,

    leider arbeite ich nicht mit TextBoxen sondern mit TextBlöcken. Eine korrekte Lösung habe ich selber auch noch nicht gefunden. Ich möchte die einfachsten Controls in einer Anwendung verwenden um Textausgabe zu realisieren. Eine TextBox ist da schon viel zu komplex "nur" um etwas Text anzuzueigen.

    Grüße

    JP One

    Donnerstag, 26. September 2013 07:21
  • Hallo,

    ja jetzt sehe ich auch, dass ich mich da verlesen habe :)

    Nun da TextBlock keine LineCount property besitzt muss man sich da was anderes einfallen lassen.

    Dennoch musst du sowieso auf Text Input hören, danach kannst du z.b. folgendes ausführen.

    char[] chars = Environment.NewLine.ToCharArray();
    
    string[] lines = tb.Text.Split(chars);

    Und so kannst du herausfinden wie viele Zeilen du hast.


    • Bearbeitet dev hedgehog Donnerstag, 26. September 2013 11:19
    • Als Antwort markiert JP One Montag, 30. September 2013 08:38
    Donnerstag, 26. September 2013 08:10
  • Ich prüfe das mal die Tage. Solagen markiere ich das als Antwort. ;)

    Vielen Dank

    JP One

    Montag, 30. September 2013 08:38