Hallo zusammen,
jetzt hab ich noch ein Problem...
Ich habe eine TextBox:
<TextBox Text="{Binding PhysicalValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Das Property sieht wie folgt aus:
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
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
Hallo Michael,
danke für deine Hilfe. Das Problem liegt nicht am TryParse, denn dieser funktioniert. Also ich komme schon in das if.
if (doubleValue > 100)
{
this._physicalValue = 100;
}
Und auch in
this._physicalValue = 100;
D.h. der Wert auf 100 zurückgesetzt, aber die TextBox bleibt auf 1000.
Schöne Grüße
Quaneu
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
Weeks of programming can save you hours of planning
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
komisch
this._physicalValue = 100;
dürfte doch eiglich garnet kompilieren, denn _physicalValue ist doch String ?(
Der frühe Apfel fängt den Wurm.
Warum mchst du aus dem Property überhaupt einen string und nicht direkt einen double?
@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.