使用 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 在值的中间添加一个单词的主要内容,如果未能解决你的问题,请参考以下文章

在值列表中选择具有属性值的元素

MPAndroidChart PieChart 标签在值之上

更新时添加值的字符结尾 - SQL Server [重复]

使用 Linq 在值之间添加逗号

JS 转换数据类型

在值处停止 UISlider