2

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

例如..我的模型:

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

Code 的可能值为:'00000101001'、'00000201001' 等...

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

如果可以使用 stringformat 来实现这一点,那将是很好的,而必须由我自己来实现。

4

3 回答 3

2

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

你很高兴去!

于 2013-06-20T15:00:14.683 回答
0

只需使用转换功能。例如:

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

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

//output= 000002-01
于 2013-06-20T14:52:55.427 回答
0

可以做这样的事情:

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

问候。

于 2013-06-20T14:56:22.380 回答