在WPF XAML中格式化数字编号

时间:2017-07-24 09:10:19

标签: c# wpf xaml format

我知道它被多次询问过,我看过很多关于它的帖子,但它仍然无效(我查了http://lambert.geek.nz/2009/03/stringformatconverter/)。

  • 我想在文本框中打印带间距和逗号的数字(没有任何意义,但用户仍然可以将其用作逗号)。

例如:打印的数字" 12 236,3"。 到目前为止我有一个转换器。 我检查并且返回值格式良好,我在文本框上调用我的转换器,即使在调用我的转换器被调用但是打印的值是" classic"并没有考虑我的格式。 转换器:

public class NumericFieldConverter : IValueConverter
    {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double val = System.Convert.ToDouble(value);
        string valString = val.ToString();
        string finalString = string.Empty;
        var nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
        nfi.NumberGroupSeparator = " ";
        finalString = val.ToString("#,0.00", nfi); // "1 234 897.11"
        finalString = finalString.Replace(".", ",");//"1 234 897,11"

        return finalString;
    }

    public object ConvertBack(object value, Type targetType, object 
parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

这是我在XAML中的约束力:

 <TextBox Text="{Binding SelectedAvenant.TermeFixe0, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource NumericFieldConverter}, Mode=TwoWay}" IsReadOnly="True" Grid.Row="5" Grid.Column="1"/>

实际上我需要将转换器应用到我的所有文本框(带样式)但我稍后会这样做。

2 个答案:

答案 0 :(得分:0)

您必须在窗口/ usercontrol /...

上创建转换器的实例
<Window ...>
    <Window.Resources>
        <local:NumericFieldConverter x:Key="converter" />
    </Window.Resources>
</Window>

并在TextBox中使用它

Converter={StaticResource converter}, 

答案 1 :(得分:0)

This库支持格式化。

样品:

<numeric:DoubleBox Culture="sv-se"
                   StringFormat="#,0.00"
                   Value="{Binding Value}" />