Xaml Stringformat

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von namdi.

    Xaml Stringformat

    Hallo Mitprogrammierer,

    so richtig begeistert mich das Xaml ja nicht und jetzt habe ich eine Frage für die Profis von euch.
    Ich habe ein Eingabefeld mit einer Textbox und möchte der Eingabe eine Einheit zufügen. Mit einer Währung funktioniert das einwandfrei.
    Ich habe ein Feld mit einer Gewichtsangabe und möchte ein "kg" anfügen. Mit ein bisschen Suchen habe ich folgende Lösung gewählt:

    XML-Quellcode

    1. <TextBox x:Name="tbVerkGew" KeyboardNavigation.TabIndex="5" HorizontalContentAlignment="Right" HorizontalAlignment="Left"
    2. Height="23" Margin="15,282,0,0" VerticalAlignment="Top" Width="206"
    3. Text="{Binding Path=gewicht_vk, Mode=TwoWay, StringFormat ='{}{0:N0} kg', ConverterCulture=de-DE}"
    4. Grid.Column="1"/>


    Das sieht dann folgendermaßen und erstmal gut aus:


    Nur leider läßt sich nichts mehr editieren. Wenn ich eine Zahl ändere, wird sie nicht akzeptiert


    Nur wenn ich das ganze Feld leer mache und eine Zahl neu eingebe wird das kg-Zeichen wieder korrekt eingesetzt und das ganze apzeptiert.
    Das ist aber einem Benutzer schwer zu vermitteln oder?

    Die Krönung wäre, wenn man auch gar nicht erst etwas anderes als eine Zahl eingeben könnte und Buschstaben gar nicht möglich wären


    Vielleicht bin ich auch nur verwöhnt. Ich habe ursprünglich mal mit Sybase Powerbuilder Programme gebaut.
    Dort war es sehr einfach auf Eingabefelder Validierungen zu legen und gleich Fehlermeldungen bei falschen Eingaben zu erzeugen.

    Gibt es Libraries oder Tools für Xaml bei denen man sich nicht durch kryptische Stringformate wühlen muss?

    Grüße Ulf

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „namdi“ ()

    In meinen Wpf-Übungen verwende ich StringFormat 81 mal, davon aber nur zweimal an einer Textbox - sonst immer nur an Readonly-Controls wie label und TextBlock.
    Zusätzliche Buchstaben wie kg füge ich meinen Textboxen nicht hinzu - sowas mache ich nur bei Textblöcke etc.
    Langer Rede kurzer Sinn: Ich hab Stringformat noch nie in der Art verwendet, wie du hier zeigst.

    Ich vermute, deine Textbox ist an eine Integer-Property gebunden, und wenn da nun "99 kg" drinne steht, ist das kein Integer sondern ein String, und ist somit ungültig.
    Vielleicht kann man im Xaml das Kg in einen Textblock verlagern, sodass die Textbox wirklich nur Zahlen präsentiert.
    Hallo namdi

    Wie mein Vorredner schon schrieb ist eine Textbox nicht wirklich für solch ein vorhaben geeignet.
    Aber es gibt in der Welt der WPF ja zum Glück Converter. Pack einen drauf und du bekommst gleich den richtigen Datentypen raus. Vorausgesetzt natürlich du verwendet die WPF mit Binding wie es sich gehört.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    namdi schrieb:

    ich dachte nur

    Trotzdem bekommst du einen String zurück, wie bindest du also. Auf ein String Property und dieses wandelst du dann um, um es dann einer Decimal oder Double Variable zuzuweisen?
    Warum so umständlich. Ein Converter sind im Idealfall zwei Zeilen Code und du kannst ihn immer wieder verwenden und muss nicht immer und immer wieder an Stellen im Code dieselbe Umwandlung vornehmen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##