2014-09-23 73 views
0

我想把值(雙類型)在文本框中,我想獲得自定義格式。多文化與文本框

爲了解釋,我把10001.1或10001,1,我想在我的texblock中有10 001,1。

目前我的結果是10,001.00我不知道如何正確地更改格式。

我的文字塊被綁定在此:

private double? _Total = null; 
    public double? Total 
    { 
     get 
     { 
      if (FiltreAffaire != null) 
       _Total = ListeAfterFiltre.Sum(CF => CF.CommandeFournisseurLignes.Where(CFL => CFL.Affaire.Numero == FiltreAffaire.Split('-').First().Trim()).Sum(CFL => CFL.Total_HT)); 
      else 
       return _ListeAfterFiltre.Sum(CF => CF.Montant_HT); 

      return _Total; 
     } 
     set 
     { 
      _Total = value; 
     } 
    } 

感謝

+1

您可以使用[自定義格式](http://stackoverflow.com/q/18361689/1997232)。目前還不清楚你爲什麼稱你爲「多元文化」的問題。 – Sinatr 2014-09-23 07:30:09

回答

1

您可以使用一個簡單的StringFormat獲得您所需的值... 如果您在使用逗號作爲一個國家小數分隔

DoubleValue = 10001.1; 

...

<TextBlock Text="{Binding DoubleValue, StringFormat={}{0:### ###.#}}" /> 

在英格蘭,這將輸出如下:

10 001.1 

在法國,這應該輸出:

10 001,1 

您也可以使用NumberFormatInfo class做到這一點的代碼

NumberFormatInfo numberFormatInfo = new NumberFormatInfo(); 
numberFormatInfo.NumberDecimalDigits = 1; 
numberFormatInfo.NumberDecimalSeparator = ","; 
numberFormatInfo.NumberGroupSeparator = " "; 
numberFormatInfo.NumberGroupSizes = new int[] { 3 }; 
string value = DoubleValue.ToString("N", numberFormatInfo); 

這個o utputs:

10 001,1 
0

我終於可以用這樣的事情(在文本框):

  CultureInfo ci = (CultureInfo)Thread.CurrentThread.CurrentUICulture.Clone(); 
     ci.NumberFormat.NumberDecimalSeparator = "."; 
     Thread.CurrentThread.CurrentUICulture = ci; 
     Thread.CurrentThread.CurrentCulture = ci; 

和轉換器設定值。

ValueConverter="{StaticResource StringToDoubleConverterN3Key}" 

public class StringToDoubleConverterN3 : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return ((double)value).ToString("N3").Replace('.', ','); 
    } 

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