Laden...

double.TryParse funktioniert nur bedingt

Erstellt von Isolde vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.434 Views
Isolde Themenstarter:in
13 Beiträge seit 2012
vor 8 Jahren
double.TryParse funktioniert nur bedingt

Hallo Leute,

habe ein Datagrid, in welchem double-Werte angezeigt und auch bearbeitet werden.
Die Darstellung mit Dezimal-Komma kann man mittels

Binding="{Binding Path=Preis, ConverterCulture='de-DE', StringFormat='0.00€'}"

erreichen. Da man dazu aber alle Felder entsprechend fest einstellen muss habe ich im
Konstruktor der App

FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

eingetragen, Damit erscheinen alle Double-Werte in der Anwendung mit Komma statt mit Punkt.

So weit, so gut. Wenn ich jetzt aber mit

var _Result = double.TryParse(_updateElement.Text,  NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out _Betrag);

einen Wert zwischen 0 und 1 (_updateElement.Text ist beispielsweise "0,99") umwandeln will, ist _Result=false und _Betrag dann natürlich 0.
Werte ≥ 1 lassen sich problemlos casten.

Mit

var _Result = double.TryParse(_updateElement.Text,  NumberStyles.AllowDecimalPoint, CultureInfo.CreateSpecificCulture("de-DE"), out _Betrag);

funktioniert es dann auch für den angegebenen Wertebereich nur habe ich hier wieder die expliziete Angabe von ("de-DE") die ich ja vermeiden wollte.

Hat jemand einen Tipp, wie man das besser hinbekommt?

Danke und Gruß

Danke und Gruß Isolde B.

C
2.122 Beiträge seit 2010
vor 8 Jahren

Was ist CurrentCulture in deinem Aufruf? Es kann nur daran liegen dass hier was falsches drin steht.

P
157 Beiträge seit 2014
vor 8 Jahren

Hallo,

stell beim Anwendungsstart einfach dein CurrentCulture um...dann ist dein Problem gelöst. Die ist standardmäßig nicht de-de.

Wenn's zum weinen nicht reicht, lach drüber!