使用StringFormat在值的中间添加单词

时间:2014-06-05 14:29:01

标签: c# wpf xaml string-formatting

我今天遇到了这个问题,使用绑定;我可以在xaml文件中绑定一些值,值看起来像58000.1234 , 58000.2234 , 58431.100等。我想在这个值的中间添加一个单词,它可能会变成58x000.1 ,58x000.2, 58x431.1

我发现StringFormat可能是处理我的问题的好方法,所以我以某种方式尝试了以下代码,

<TextBlock Text="{Binding Distance, RelativeSource={RelativeSource TemplatedParent}, StringFormat='{}{0:0.#}'}" />

它管理点值问题,但我仍然不知道如何在我的值中间添加x。

StringFormat='distance {0:0.#} m'

此代码可以在值之前和之后添加单词。

3 个答案:

答案 0 :(得分:3)

非常简单,只需将其添加到以下格式:

string.Format("{0:000 hello 000.00}", 123456);
//123 hello 456.00

请记住,这里的零是从右到左的值的占位符。这对格式化电话号码也很有用。

string.Format("{0:(000) 000-0000}", 8885551212);
//(888) 555-1212

最后,您还可以将哈希(#)标记用于占位符。

这里有完整的文档: http://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx

答案 1 :(得分:1)

尝试使用这样的字符串格式:

<TextBlock Text="{Binding Number, StringFormat='{}##x###.#'}" />

这应该可以解决问题。

答案 2 :(得分:0)

你不能分割价值。您必须在Binding中使用ValueConverter。

 public class WordSplitConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string input = value.ToString();
            // you can parameterize the split position via the ConverterParameter
            string left = input.Substring(0,2);
            string right= input.Substring(2,input.Length-3);
            return string.Format("{0}X{1}",left ,right);
        }

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

用法:

<local:WordSplitConverter x:Key="wordSplitConverter" />

<TextBlock Text="{Binding Distance, RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource wordSplitConverter}" />

请添加适当的错误处理...;)