使用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的前后添加单词。
非常简单,只需将其添加到格式中:
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;)