Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XAML和MVVM将返回字符串格式化为信用卡号_Xaml_Xamarin_Mvvmcross - Fatal编程技术网

使用XAML和MVVM将返回字符串格式化为信用卡号

使用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

如何在xaml中设置信用卡号格式



这是假设您的视图模型已将数字转换为整数,并将其设置为属性“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}}"