使用 StringFormat 在值的中间添加一个单词
Posted
技术标签:
【中文标题】使用 StringFormat 在值的中间添加一个单词【英文标题】:Adding a word in the middle of a value by using StringFormat 【发布时间】:2014-06-05 14:29:01 【问题描述】:我今天遇到了这个问题,通过使用绑定;我可以在 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'
这段代码可以在值前后添加单词。
【问题讨论】:
您可以在自定义文化中将千位分隔符的值更改为“x”。见这里:***.com/questions/752145/… 【参考方案1】:很简单,只需将其添加到格式中:
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
【讨论】:
【参考方案2】:尝试使用这样的字符串格式:
<TextBlock Text="Binding Number, StringFormat='##x###.#'" />
这应该可以解决问题。
【讨论】:
【参考方案3】:您不能分割该值。您必须在 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("0X1",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" />
请添加适当的错误处理... ;)
【讨论】:
在双向绑定的情况下取回值对于转换器方法可能会很棘手。在这种情况下,最好使用格式字符串。 @AndreiZubov,至少它是可能的。对于字符串格式,您需要以原始形式输入。但没问题,因为原始代码中的绑定是针对文本块的 -> 因此 OneWay。 :)以上是关于使用 StringFormat 在值的中间添加一个单词的主要内容,如果未能解决你的问题,请参考以下文章