2017-05-08 54 views
0

我们遇到了一个我们目前正在处理的问题。 我们希望使用syncfusion或类似的WPF元素中的DoubleTextBox。 的问题是:Syncfusion DoubleTextBox从用户转换输入

的用户应该能够在字段中键入345,并得到了自动更正为3.45 如果他种35应该是0.35 如果他类型的4.56应该是4.56 到目前为止,我们实施一个转换器的绑定,这非常好。 但是,如果通过数据库输入的值是一个小数值,例如300,那么转换器会查找点“。”。 - >没有找到它,所以300现在是3.00 这是错误的。 如果数据库值是312.45,那么效果很好。小数点全部为零:/

我们目前无法为此使用我们的转换器。

有没有人有我们的问题的想法?是否有一个来自syncfusion的WPF元素到目前为止呢?

这是转换器:

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

请分享转换器代码和viewmodel属性。这听起来像你的viewmodel属性可能是一个字符串。 –

+0

我的viewmodel属性是一个小数。 –

+0

你也有ConvertBack方法吗? –

回答

0

这是正常工作对我来说。

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

谢谢多数民众赞成它:)它适用于我们的解决方案完美。 –