WPF StringFormat格式化字符串值
本文关键字:字符串 格式化 StringFormat WPF | 更新日期: 2023-09-27 18:19:09
是否可以使用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");
问候。