Seiten Effekt oder Normal? 5 - 9 lässt Nummer wachsen

  • WPF

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

    Seiten Effekt oder Normal? 5 - 9 lässt Nummer wachsen

    Hallo :D

    beim Binden auf meine TextBox ist ein komischer Seiten-Effekt entstanden oder auch etwas komplet normales ... das weiß ich nicht:

    Zur erklärung, wenn ich in eine TextBox gehe und einer Zahl von 5 - 9 eingebe und dann gedrückt halte, zählt die Textbox von alleine hoch.
    Liegt das an meinem StringFormat?

    Spoiler anzeigen

    C#-Quellcode

    1. ​ Bind(analyseSetting, nameof(analyseSetting.SigmoidX), control.TxbSigmoidX, TextBox.TextProperty , new DoubleConverter(), "{0:##.0##}");


    C#-Quellcode

    1. ​ [MethodImpl(MethodImplOptions.AggressiveInlining)]
    2. private void Bind<T>(T source, string propertyName, Control control, DependencyProperty dependencyProperty, IValueConverter valueConverter, string stringFormat = "")
    3. {
    4. Binding binding = new Binding()
    5. {
    6. Path = new PropertyPath(propertyName),
    7. Source = source,
    8. Mode = BindingMode.TwoWay,
    9. UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
    10. };
    11. if (valueConverter != null) binding.Converter = valueConverter;
    12. if (!string.IsNullOrWhiteSpace(stringFormat)) binding.StringFormat = stringFormat;
    13. binding.NotifyOnSourceUpdated = true;
    14. control.SetBinding(dependencyProperty, binding);
    15. }


    C#-Quellcode

    1. ​public class DoubleConverter : IValueConverter
    2. {
    3. public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => value;
    4. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => value.ToString().EndsWith(".") ? $"{value}.0" : value;
    5. }[/spoiler][spoiler]
    Hallo @Facebamm

    Das liegt daran das der Converter dazwischenfunkt. Durch die Konvertierung in String in Verbindung das das Property SigmoidX in der Klasse hinter analyseSetting vermutlich eh vom Typ Double ist.
    Also warum Konvertieren wenn dies sowieso passt?

    Und warum Binding über Code? Gibt es dafür einen Grund? Im normalfall ist dies auf ein falschen Design zurückzuführen. Oder ist es vieleicht einfach nur ein Test?

    Lass den Converter weg und es klappt.

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

    Wenn ich den Converter weg lasse, dann kann ich kein Dot oder Comma in die Textbox eintragen.

    SigmoidX : Double

    Binding über Code, weil ich das mit dem XAML binding irgendwie nicht hinbekomme bzw werden meine Daten/Werte nicht ausgetauscht ;(

    Facebamm schrieb:

    Wenn ich den Converter weg lasse, dann kann ich kein Dot oder Comma in die Textbox eintragen.

    Dann musst du die richtige Culture eintragen. Im Window oder im UserControl um das es geht einfach Language = "de-DE" siehe meine TutorialReihe unter dem Kapitel Culture!!

    Facebamm schrieb:

    weil ich das mit dem XAML binding irgendwie nicht hinbekomme

    Und da würde ich mal ansetzen, das ist sonst ja nur ein "umgehen" eines Problem, was wieder zu anderen Problemen führt.

    Haste vieleicht ein Beispielprojekt?

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