protected override ConversionResult <TSource> ConvertBack(TValue value, Type targetType, object parameter, CultureInfo culture)
        {
            var dictionary = GetMapping(parameter);

            if (dictionary.ContainsValue(value))
            {
                return(ConversionResult <TSource> .SetValue(dictionary.FirstOrDefault(x => x.Value.Equals(value)).Key));
            }
            else
            {
                return(ConversionResult <TSource> .UnsetValue());
            }
        }
        protected override ConversionResult <TValue> Convert(TSource value, Type targetType, object parameter, CultureInfo culture)
        {
            var dictionary = GetMapping(parameter);

            if (dictionary.ContainsKey(value))
            {
                return(ConversionResult <TValue> .SetValue(dictionary[value]));
            }
            else
            {
                return(ConversionResult <TValue> .UnsetValue());
            }
        }
        protected override ConversionResult <BottomTabBarItem> ConvertBack(int value, Type targetType, object parameter, CultureInfo culture)
        {
            switch (value)
            {
            case Resource.Id.template1_item:
                return(ConversionResult <BottomTabBarItem> .SetValue(BottomTabBarItem.Template1));

            case Resource.Id.template2_item:
                return(ConversionResult <BottomTabBarItem> .SetValue(BottomTabBarItem.Template2));

            case Resource.Id.template3_item:
                return(ConversionResult <BottomTabBarItem> .SetValue(BottomTabBarItem.Template3));

            default:
                return(ConversionResult <BottomTabBarItem> .UnsetValue());
            }
        }
        protected override ConversionResult <int> Convert(BottomTabBarItem value, Type targetType, object parameter, CultureInfo culture)
        {
            switch (value)
            {
            case BottomTabBarItem.Template1:
                return(ConversionResult <int> .SetValue(Resource.Id.template1_item));

            case BottomTabBarItem.Template2:
                return(ConversionResult <int> .SetValue(Resource.Id.template2_item));

            case BottomTabBarItem.Template3:
                return(ConversionResult <int> .SetValue(Resource.Id.template3_item));

            default:
                return(ConversionResult <int> .UnsetValue());
            }
        }
        protected override ConversionResult <string> Convert(VacationType value, Type targetType, object parameter, CultureInfo culture)
        {
            var valueTitle = value.DisplayTitle();

            return(valueTitle != null ? ConversionResult <string> .SetValue(valueTitle) : ConversionResult <string> .UnsetValue());
        }