使用XAML和MVVM将返回字符串格式化为信用卡号
如何在xaml中设置信用卡号格式 像使用XAML和MVVM将返回字符串格式化为信用卡号,xaml,xamarin,mvvmcross,Xaml,Xamarin,Mvvmcross,如何在xaml中设置信用卡号格式 像 这是假设您的视图模型已将数字转换为整数,并将其设置为属性“YourVmPropertyNameHere”。这可以通过使用值转换器轻松实现 public class CreditCardNumberValueConverter : IValueConverter { public override object Convert(object value, Type targetType, object parameter, CultureInfo cu
这是假设您的视图模型已将数字转换为整数,并将其设置为属性“YourVmPropertyNameHere”。这可以通过使用值转换器轻松实现
public class CreditCardNumberValueConverter : IValueConverter
{
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var builder = new StringBuilder(Regex.Replace(value.ToString(), @"\D", ""));
foreach (var i in Enumerable.Range(0, builder.Length / 4).Reverse())
builder.Insert(4*i + 4, " ");
return builder.ToString().Trim();
}
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Regex.Replace(value.ToString(), @"\D", "");
}
}
在Styles.cs中初始化后,可以将其应用于XAML中控件的Text属性,如下所示:
Text="{Binding CardNo, Converter={StaticResource CreditCardNumberValueConverter}}"
同样,电话号码也可以格式化。这不是Working@Happy,尝试用散列(#)替换零(#)
StringFormat='{0:####-##-##-##-##-########}
其他方面,次好的选择是使用值转换器
public class CreditCardNumberValueConverter : IValueConverter
{
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var builder = new StringBuilder(Regex.Replace(value.ToString(), @"\D", ""));
foreach (var i in Enumerable.Range(0, builder.Length / 4).Reverse())
builder.Insert(4*i + 4, " ");
return builder.ToString().Trim();
}
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Regex.Replace(value.ToString(), @"\D", "");
}
}
Text="{Binding CardNo, Converter={StaticResource CreditCardNumberValueConverter}}"