WPF StringFormat格式化字符串值



是否可以使用StringFormat…

例如

. .我的模型:

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

Code的可能值为:'00000101001','00000201001'等…

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

如果有可能使用字符串格式来实现这一点,将是很好的,而不是由我自己实现。

你的问题是关于在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}

你可以走了!

使用转换函数。例句:

public static string Convert(string raw)
{
    return raw.Substring(0,6)+"-"+raw.Substring(6,2);
}
Console.WriteLine (Convert("00000201001"));
//output= 000002-01

可以这样做:

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

问候。

最新更新