Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Zusammen,

wie oben schon erwähnt, ich habe eine DataGrid mit einem DataGridTextColumn, wo ich anfangs das Problem hatte das ich Double Werte nur mit einem "."(Kommazahlen hat er irgendwie komisch umgewandelt) eingeben konnte, dann hab ich versucht ein Converter einzubauen welches halt die Kommazahl austauscht gegen Zahlen mit einem Punkt. Das hat auch so immer ganz gut Funktioniert, aber irgendwie kann ich kein "," oder "." eingeben wenn ich davor eine Zahl eingegeben habe.

Hatte jemand schonmal so ein ähnliches Problem? Wenn ja würd ich mir über eure Hilfe freuen.

Gelöst von Rabber

Zur Lösung
  • Autor

Unbenannt.thumb.PNG.5707c60b608f34c74106e85b7caccd8d.PNG

<local:DoubleConverter x:Key="Converter"/>

Hier ist ein Ausschnitt, vom XAML.

Und unten der Konverter.

class DoubleConverter : IValueConverter

{

#region IValueConverter Member

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

{

return value;

}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

{

return double.Parse(value.ToString().Replace(",", "."), CultureInfo.InvariantCulture);

}

#endregion

}

 

Ich hab nochmal in meine Backups geschaut und geprüft wann bei mir der Fehler noch nicht war und mir ist aufgefallen das der Fehler nur auftaucht wenn ich den UpdateSourceTrigger auf PropertyChanged setze, was ich nicht genau versteh warum.

 

Bearbeitet von danieljess88

Hallo,

anstelle des Converters könntest du besser in XAML das Format des Strings vorgeben.

 

Beispiel:

Text="{Binding Preis, StringFormat={}{0:C}}"

Das bedeutet, dass die Anzeige als Währung formatiert wird und der aktuellen Programm/Systemsprache (sprich Dezimaltrenner) entspricht.

 

Falls es nicht um Währung geht kannst du hier weitere Formatierungen finden (auch um bspw. Nachkommastellen einzuschränken).

  • Autor

Hallo Markus,

danke für deinen Tipp mit dem Format,

leider ist es nicht das was ich wollte. Der Converter den ich verwende macht schon das was ich von ihm möchte. Der User soll die Möglichkeit haben Kommazahlen eingeben zu können, Problem für mich ist da aber das ich Kommazahlen nicht wirklich z.B. in MySql verwenden kann(MySql möchte "2.6", aber User gibt "2,6" ein. Wenn ich 2,6 in die Datenbank eintrage kommt 26 raus statt 2.6). Aus diesem Grund habe ich den Converter erstellt.

Aber mein Problem liegt glaub ich eher an dem UpdateSourceTrigger. Ich hab ihn im Moment auf "LostFocus" gestellt (damit funktioniert der Converter auch), aber ich find "LostFocus" nicht so gut, weil die Werte die man in der DataGrid einträgt erst in die Binding Variable übertragen wird wenn man fertig mit dem bearbeiten ist. Ich wollte aber das der Wert sofort geändert wird, wodurch ich "PropertyChanged" probiert habe, womit dann ein Problem mit dem Converter entstanden ist und man kann dann im allgemeinen keine Kommazahlen eintragen ("2,6" und "2.6" ging dann nicht mehr).

  • Lösung

Das Problem mit dem PropertyChanged-Event wurde weiter vorne erklärt. Dann kommt der Wert "2," oder "2." rein und den kann er ggf. nicht parsen, da er an dieser Stelle "2,0" bzw. "2.0" erwarten würde. Was spricht denn gegen die LostFocus-Lösung?

vor 23 Minuten schrieb danieljess88:

Wenn ich 2,6 in die Datenbank eintrage kommt 26 raus statt 2.6). Aus diesem Grund habe ich den Converter erstellt.

Warum parst du aber nur in ConvertBack? Wenn deine Werte in der Tabelle nur mit "." gespeichert sind, dann konvertiere halt auch, wenn du die Werte von der DB bekommst. Der Punkt ist halt dezimaler Seperator in den US und somit auch in den meisten DB und Programmiersprachen.

Bearbeitet von KeeperOfCoffee

  • Autor
vor 1 Stunde schrieb Errraddicator:

Das Problem mit dem PropertyChanged-Event wurde weiter vorne erklärt. Dann kommt der Wert "2," oder "2." rein und den kann er ggf. nicht parsen, da er an dieser Stelle "2,0" bzw. "2.0" erwarten würde. Was spricht denn gegen die LostFocus-Lösung?

Nach mehreren Tests habe ich dann auch verstanden das das PropertyChanged-Event das "2," oder "2." nicht parsen kann. Trotzdem danke nochmal für die Erklärung.

 

Ich hab jetzt schon für mich eine Lösung gefunden, wie ich mein Problem beheben kann. Danke an alle die mir weitergeholfen haben. :) 

  • Autor
vor 1 Stunde schrieb KeeperOfCoffee:

Warum parst du aber nur in ConvertBack? Wenn deine Werte in der Tabelle nur mit "." gespeichert sind, dann konvertiere halt auch, wenn du die Werte von der DB bekommst. Der Punkt ist halt dezimaler Seperator in den US und somit auch in den meisten DB und Programmiersprachen.

Die Änderung meiner Werte von "," auf "." hab ich in der MySql Update Methode eingebaut. Aber ich denke das dein Vorschlag einfacher ist. Ich werde versuchen mir das zu nutze zu machen. Danke für den Tipp.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.