myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » TextBox Binging funktioniert nicht immer
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

TextBox Binging funktioniert nicht immer

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Quaneu Quaneu ist männlich
myCSharp.de-Mitglied

avatar-3126.jpg


Dabei seit: 22.10.2008
Beiträge: 685
Entwicklungsumgebung: VS 2019
Herkunft: Regensburg


Quaneu ist offline

TextBox Binging funktioniert nicht immer

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

jetzt hab ich noch ein Problem...

Ich habe eine TextBox:

XML-Code:
<TextBox Text="{Binding PhysicalValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

Das Property sieht wie folgt aus:

C#-Code:
private String _physicalValue;
public String PhysicalValue
{
    get { return this._physicalValue; }
    set
    {
        if (value == null)
        {
            throw new UnknownException("PhysicalValue can not be null.");
        }
        else
        {
            if (this._physicalValue != value)
            {
                Double doubleValue;
                this._physicalValue = value;
                if (Double.TryParse(this._physicalValue, out doubleValue))
                {
                        if (doubleValue > 100)
                        {
                                this._physicalValue = "100";
                        }
                }
                OnPropertyChanged("PhysicalValue");
            }
        }
    }
}

Das ganze funktioniert leider nicht immer. Wenn ich 123 eingebe wird der Text in der TextBox auf 100 zurückgesetzt (so wie gewünscht). Wenn ich nun aber aus 100 1000 mache bleibt der Text auf 1000... Warum updatet sich die TextBox nun nicht mehr?

Schöne Grüße
Quaneu

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Quaneu am 30.11.2012 08:57.

Neuer Beitrag 28.11.2012 22:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
xxMUROxx xxMUROxx ist männlich
myCSharp.de-Mitglied

avatar-3236.jpg


Dabei seit: 11.01.2010
Beiträge: 1.552
Entwicklungsumgebung: VS 13, SSMS 12
Herkunft: Südtirol/Italien


xxMUROxx ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Quaneu,

sieh dir mal die 2. Überladung von  TryParse an. Dort kannst du explizit den Nummerntyp mitgeben. Denn es kann sein, dass es dadurch Probleme macht. Versuch auch zu debuggen, damit du siehst ob er bei 1000 bei Double.TryParse reinspringt oder nicht. Versuche verschidene Szenarien:
  • 1000
  • 1.000
  • 1.000,00
  • 1,000
  • 1,000.00
  • 1,000,00
  • 1.000.00
Du wirst staunen welch andere Ergebnisse du erreichst. Dadurch lernst du den besseren Umgang mit Zahlen und wie die Konvertierung von String nach double funktioniert.

Gruß,
Michael

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von xxMUROxx am 28.11.2012 23:25.

Neuer Beitrag 28.11.2012 23:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Quaneu Quaneu ist männlich
myCSharp.de-Mitglied

avatar-3126.jpg


Dabei seit: 22.10.2008
Beiträge: 685
Entwicklungsumgebung: VS 2019
Herkunft: Regensburg

Themenstarter Thema begonnen von Quaneu

Quaneu ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Michael,

danke für deine Hilfe. Das Problem liegt nicht am TryParse, denn dieser funktioniert. Also ich komme schon in das if.

C#-Code:
if (doubleValue > 100)
{
   this._physicalValue = 100;
}

Und auch in

C#-Code:
  this._physicalValue = 100;

D.h. der Wert auf 100 zurückgesetzt, aber die TextBox bleibt auf 1000.

Schöne Grüße
Quaneu
Neuer Beitrag 29.11.2012 09:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.415
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top



C#-Code:
Double.TryParse(this._physicalValue, out doubleValue)

Du solltest evtl. nicht die _physicalValue parsen, sondern die value...


Edit: Hab übersehen, daß das ja alles Strings sind. Hast du mal einen Breakpoint in den Getter gesetzt , um zu schauen, ob der richtige Wert überhaupt abgefragt wird?

Christian

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MrSparkle am 29.11.2012 10:47.

Neuer Beitrag 29.11.2012 10:45 Beiträge des Benutzers | zu Buddylist hinzufügen
Quaneu Quaneu ist männlich
myCSharp.de-Mitglied

avatar-3126.jpg


Dabei seit: 22.10.2008
Beiträge: 685
Entwicklungsumgebung: VS 2019
Herkunft: Regensburg

Themenstarter Thema begonnen von Quaneu

Quaneu ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Christian,

ja hab ich. Er kommt nach dem setter noch einmal in den getter und dort steht dann "100" drin (also this._physicalValue == "100").

Schöne Grüße
Gennaro
Neuer Beitrag 29.11.2012 11:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ErfinderDesRades
myCSharp.de-Poweruser/ Experte

avatar-3151.jpg


Dabei seit: 31.01.2008
Beiträge: 5.287


ErfinderDesRades ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

komisch

C#-Code:
    this._physicalValue = 100;

dürfte doch eiglich garnet kompilieren, denn _physicalValue ist doch String verwirrt
Neuer Beitrag 29.11.2012 23:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
pdelvo pdelvo ist männlich
myCSharp.de-Mitglied

avatar-3354.png


Dabei seit: 02.11.2008
Beiträge: 1.346
Entwicklungsumgebung: Visual Studio 2012 Prof.


pdelvo ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Warum mchst du aus dem Property überhaupt einen string und nicht direkt einen double?
Neuer Beitrag 29.11.2012 23:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Quaneu Quaneu ist männlich
myCSharp.de-Mitglied

avatar-3126.jpg


Dabei seit: 22.10.2008
Beiträge: 685
Entwicklungsumgebung: VS 2019
Herkunft: Regensburg

Themenstarter Thema begonnen von Quaneu

Quaneu ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@ErfinderDesRades:
Da hast Du natürlich recht. Hab den Wert hier nur abgeändert und die "" vergessen. Konnte es hier leider nicht überall ändern, da mich die Seite dran hindert.

@pdelvo:
Da ich später mit IDataErrorInfo arbeiten will und wenn ich double nehme und der User in die TextBox abc eingibt, klappt das so nimmer.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Quaneu am 30.11.2012 09:01.

Neuer Beitrag 30.11.2012 09:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 7 Jahre.
Der letzte Beitrag ist älter als 7 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 03.08.2020 19:19