我今天遇到了这个问题,使用绑定;我可以在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'
此代码可以在值之前和之后添加单词。
答案 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}" />
请添加适当的错误处理...;)