2017-05-08 21 views
0

konvertieren Wir haben ein Problem, an dem wir gerade arbeiten. Wir wollen eine DoubleTextBox von syncfusion oder einem ähnlichen WPF-Element verwenden. Die Frage ist:Syncfusion DoubleTextBox Eingabe von Benutzer

Der Benutzer sollte in der Lage sein, 345 in dem Feld eingeben und es wurde die automatische bis 3,45 korrigiert Wenn er 35 Arten sollten es 0,35 sein, wenn er Typen 4,56 es 4,56 weit So sollten wir umgesetzt ein Konverter für die Bindung, die das sehr gut machen. Aber wenn der Wert über die Datenbank als Dezimalwert wie 300 eingegeben wird, ist 300,00 der Konverter nach dem Punkt "." -> habe es nicht gefunden und platziere eins so 300 ist jetzt 3.00 Das ist falsch. Wenn der Datenbankwert 312.45 ist, funktioniert es gut. Der Dezimaltrenner aller Nullstellen:/

Wir können derzeit unseren Konverter dafür nicht verwenden.

Hat jemand eine Idee für unser Problem? Gibt es ein WPF-Element von syncfusion, welches das bisher macht?

Dies ist der Konverter:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    try 
    { 
     if (targetType != typeof(object)) 
     { 
      // Formatierung bei Eingabefeldern 
      if (value != null) 
      { 
       string result = String.Empty; 

       result = value.ToString(); 
       if (!value.ToString().Contains(",")) 
       { 
        decimal _formatted = System.Convert.ToDecimal(value)/100; 

        result = _formatted.ToString("F"); 
       } 
       else if (value.ToString().Contains(",")) 
       { 
        decimal _formatted = System.Convert.ToDecimal(value); 

        result = string.Format("{0:F2}", _formatted); 
       } 

       return result.ToString(); 
      } 
     } 
     else 
     { 
      // Formatierung bei nicht Eingabefeldern 
      if (value == String.Empty) 
      { 
       value = 0; 
      } 

      decimal _formattedcomputed = System.Convert.ToDecimal(value); 
      string resultcomputed = string.Format("{0:F2}", _formattedcomputed); 

      return resultcomputed; 
     } 
    } 
    catch (Exception ex) 
    { 

    } 

    return null; 
} 
+0

Bitte teilen Sie Code für den Konverter und die Viewmodel-Eigenschaft. Es klingt wie Ihre Viewmodel-Eigenschaft möglicherweise eine Zeichenfolge. –

+0

Meine viewmodelproperty ist eine Dezimalzahl. –

+0

Haben Sie auch eine ConvertBack-Methode? –

Antwort

0

Dies funktioniert für mich richtig.

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    try 
    { 
     // Formatierung bei Eingabefeldern 
     if (value != null) 
     { 
      string inputStr = value.ToString(); 
      decimal inputDecimal = System.Convert.ToDecimal(value); 

      if (inputStr.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)) 
      { 
       return inputDecimal.ToString("F2"); 
      } 
      else 
      { 
       inputDecimal /= 100; 

       return inputDecimal.ToString("F"); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     System.Diagnostics.Trace.WriteLine(
      String.Format("Error converting value {0}: {1}", value, ex.Message)); 
    } 

    return null; 
} 

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    return value; 
} 
+0

Danke das ist es :) Es funktioniert perfekt für unsere Lösung. –