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

本文关键字:一个 单词 添加 StringFormat 中间 使用 | 更新日期: 2023-09-27 18:07:07

我今天遇到了这个问题,通过使用binding;我可以在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'

这个代码可以在value的前后添加单词。

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

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

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

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

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

不能进行除法处理。你必须在绑定中使用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}" />

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