是否可以使用StringFormat格式化字符串...
例如..我的模特:
public class MyModel
{
public string Code { get; set; }
}
代码的可能值为:'00000101001','00000201001'等......
绑定时,我想表明: 对于'00000101001' - > '000001-01'(忽略最后3个字符) 对于'00000201001' - > '000002-01'(忽略最后3个字符)
如果可以使用stringformat来实现这一点,那就好了,而不得不自己实现。
答案 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");
问候。