Set ICommand through MVXValueConverter in Xamarin iOS-Android using MVVMCross

46 Views Asked by At

In my App, I am using an MVXValueConverter in Android and iOS for creating a single text with Multiple colors.

Now I want to get some Action into my View Model when I click on specific text from whole line.

Below is the code of my MVXConverter.

Android Converter Code

public class FreeShippingConverter : MvxValueConverter<string, SpannableString>
    {
        protected override SpannableString Convert(string value, Type targetType, object parameter, CultureInfo culture)
        {
            var result = new SpannableString(value);
            var startIndex = value.IndexOf(Strings.Perks_Members, StringComparison.InvariantCultureIgnoreCase);
            if (startIndex < 0)
            {
                return result;
            }

            result.SetSpan(new StyleSpan(TypefaceStyle.Normal), startIndex, startIndex + Strings.Perks_Members.Length, 0);
            result.SetSpan(new ForegroundColorSpan(Colors.Bluescale1.ToNativeColor()), startIndex, startIndex + Strings.Perks_Members.Length, 0);

            return result;
        }
    }

iOS Converter Code

public class FreeShippingConverter : MvxValueConverter<string, NSAttributedString>
    {
        protected override NSAttributedString Convert(string value, Type targetType, object parameter, CultureInfo culture)
        {
            var result = new NSMutableAttributedString(value);
            var startIndex = value.IndexOf(Strings.Perks_Members, StringComparison.InvariantCultureIgnoreCase);
            if (startIndex < 0)
            {
                return result;
            }

            var range = new NSRange(startIndex, Strings.Perks_Members.Length);
            result.AddAttribute(UIStringAttributeKey.Font, TextStyle.B2.Font(), range);
            result.AddAttribute(UIStringAttributeKey.ForegroundColor, Colors.PrimaryDarkBlue.ToNativeColor(), range);
            return result;
        }
    }

Now I want to have click Action only when I click on the result text meaning some part only. How can I achieve this?

I researched and found that it is possible through ICommand but I am not aware of How to Bind and get action through value Converter to my ViewModel class.

0

There are 0 best solutions below