4

我的 UI 中有很多数字要处理。我希望它们中的一些没有小数位,一些是小数点后 2 位,而另一些是小数点后(3 位或 4 位小数)。

我有一个名为 DoubleToStringConverter 的转换器,如下所示:

[ValueConversion(typeof(double), typeof(string))]
public class DoubleToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null ? null : ((double)value).ToString("#,0.##########");
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double retValue;
        if (double.TryParse(value as string, out retValue))
        {
            return retValue;
        }
        return DependencyProperty.UnsetValue;
    }
}

有没有办法只写一个转换器来实现这一点?似乎没有办法有一个参数化的转换器。xaml 中的 StringFormat 似乎将字符串转换为其他类型的数据。它不允许显示来自 xaml 的子字符串。

我只能想到制作IntegerToStringConverter、Double2ToStringConverter、Double3ToStringConverter等。但我想看看是否有更有效的方法。

4

1 回答 1

8

您可以传递要用作 的小数位数parameter,然后可以通过ConverterParameter绑定在 XAML 中指定。

话虽如此,对于格式化数字,您实际上根本不需要转换器。绑定StringFormat直接支持,可用于完全在 XAML 中进行格式化:

<TextBox Text="{Binding Path=TheDoubleValue, StringFormat=0:N2} />
于 2013-09-23T16:44:16.913 回答