WPF StringFormat格式化字符串值

时间:2013-06-20 14:44:28

标签: c# wpf

是否可以使用StringFormat格式化字符串...

例如..我的模特:

 public class MyModel
 {
      public string Code { get; set; } 
 }

代码的可能值为:'00000101001','00000201001'等......

绑定时,我想表明: 对于'00000101001' - > '000001-01'(忽略最后3个字符) 对于'00000201001' - > '000002-01'(忽略最后3个字符)

如果可以使用stringformat来实现这一点,那就好了,而不得不自己实现。

3 个答案:

答案 0 :(得分:2)

你的问题是关于 BINDING WPF中的一个字符串(不改变字符串的内部内容),而解决这个问题的首选策略是使用转换器,这里有一个例子可以做什么你正在寻找(只显示前10个字符)......

public class CodeConverter : MarkupExtension, IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, 
                   System.Globalization.CultureInfo culture)
    {
        try
        {
            string result = value.ToString();
            if (result.Length > 10)
            {
                // code in your exact requirements here...
                return result.Substring(0, 10);
            }
            return result;
        }
        catch{}
        return value;
    }
    public object ConvertBack(object value, Type targetType, object parameter,      
                     System.Globalization.CultureInfo culture)
    {
        return null;
    }
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this;
    }
}

在您的Xaml中,只需在绑定中指定此类...

{Binding Code, Converter={StaticResource CodeConverter}

你很高兴去!

答案 1 :(得分:0)

只需使用转换功能。 E.g:

public static string Convert(string raw)
{
    return raw.Substring(0,6)+"-"+raw.Substring(6,2);
}

Console.WriteLine (Convert("00000201001"));

//output= 000002-01

答案 2 :(得分:0)

可以这样做:

return (Int64.Parse("00000101001") / 1000).ToString("000000-00");

问候。