2017-05-08 52 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

謝謝多數民衆贊成它:)它適用於我們的解決方案完美。 –