WPF und dynamische Stringformate

  • WPF
  • .NET 5–6

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

    WPF und dynamische Stringformate

    Moin nochma,

    im Zuge meiner Spielereien um das vorhin gepostete Problem zu analysieren, bin ich auf eine nächste Frage gestoßen.

    In meinem Formular sind neben dem Datum auch double?-Werte zu formatieren. Die Anzahl der Nachkommestellen ist jedoch flexibel zu halten. So soll das Format eines Lables mal keine, mal eine und mal 3 Nachkommestellen vorgeben, je nachdem mit welchen Daten es gefüttert wird.

    Folgendes habe ich probiert

    XML-Quellcode

    1. <Label Content="{Binding Data.FaktorAlt, Converter={StaticResource doubleConverter}, ConverterParameter={Binding DataFormat}}"/>


    Das scheitert daran, dass es für ConverterParameter kein Binding gibt.

    Wie macht man das mit dynamischen ConverterParameter?

    Gruß

    MQ
    Hallo

    Mir scheint du bist etwas zu verliebt in Converter.
    Mach dir doch in deiner Klasse ein ReadOnly Property "FaktorAltString" und dieses gibt immer den gewünschten (Berechneten wenn man so will) Content zurück.

    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. ##

    Mein Formular hat rund 80 Elemente, die alle einen einzigen Converter benutzen. 80 Properties anlegen ist mühsam, zudem noch weitere Formulare folgen werden, deren Viewmodel dann ebenfalls mit knapp hundert Properties aufzublähen wären.

    Ich denke, da fahre ich mit nem Converter am Ende besser.
    Das es hier um so viele Elemente geht haste ja nicht geschrieben, selbes Spiel wie im anderen Thread.
    Bitte nicht immer alles aus der Nase ziehen lassen, da verliert man die Lust zu Antworten. Sorry, musste raus.

    Wenns nicht anders geht schau dir MultiConverter an. Damit kannst du es problemlos lösen. Dies sind genau für sowas da.

    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. ##

    Ich bin für jede Hilfe dankbar, also bitte nicht böse sein :)

    Ich versuche mich extra knapp zu halten weil meine Erfahrung ist, dass wenn zu viel mitgeliefert wird, die eigentliche Frage dann untergeht. Ich erhalte dann Antworten auf Fragen die ich nie gestellt habe. Das erfahre ich so oft.

    Mittlerweile habe ich es mit Multiconverter gelöst. Multiconverter war mir bisher noch nicht untergekommen. Wieder was gelernt!

    XML-Quellcode

    1. <Label.Content >
    2. <MultiBinding Converter="{StaticResource doubleConverter}">
    3. <Binding Path="Data.Ekaud"/>
    4. <Binding Path="DataFormat"/>
    5. </MultiBinding>
    6. </Label.Content>


    und

    C#-Quellcode

    1. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    2. {
    3. string ret = "-";
    4. if (values[0] != null)
    5. {
    6. ret = ((double)values[0]).ToString((string)values[1]);
    7. }
    8. return ret;
    9. }


    Danke
    Verstehe ich, nein, Böse bin ich sicher nicht.
    Aber wenn es z.b. um sehr viele Eigenschaften geht und nicht nur um eine wäre das eine interessante Info.

    Freut mich das es klappt.

    Tipp: Prüfe values ansich auf null und dann noch die einzelnen Items aus. Wenn du nur values[0] prüfst kann ja z.b. values null sein wenn beide Bindings fehlschlagen.

    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. ##