Ejemplo n.º 1
0
        /// <summary>
        /// Value converter for ElementSize type.
        /// </summary>
        public override ConversionResult Convert(object value, ValueConverterContext context)
        {
            if (value == null)
            {
                return(base.Convert(value, context));
            }

            Type valueType = value.GetType();

            if (valueType == _type)
            {
                return(base.Convert(value, context));
            }
            else if (valueType == _stringType)
            {
                var stringValue = (string)value;
                try
                {
                    var convertedValue = ElementSize.Parse(stringValue, context.UnitSize);
                    return(new ConversionResult(convertedValue));
                }
                catch (Exception e)
                {
                    return(ConversionFailed(value, e));
                }
            }

            return(ConversionFailed(value));
        }
        /// <summary>
        /// Value converter for Margin type.
        /// </summary>
        public override ConversionResult Convert(object value, ValueConverterContext context)
        {
            if (value == null)
            {
                return(base.Convert(value, context));
            }

            Type valueType = value.GetType();

            if (valueType == _type)
            {
                return(base.Convert(value, context));
            }
            else if (valueType == _stringType)
            {
                var stringValue = (string)value;
                try
                {
                    string[] valueList;
                    valueList = stringValue.Split(',').ToArray();
                    ElementMargin convertedValue = null;
                    if (valueList.Length == 1)
                    {
                        convertedValue = new ElementMargin(ElementSize.Parse(valueList[0], context.UnitSize));
                    }
                    else if (valueList.Length == 2)
                    {
                        convertedValue = new ElementMargin(
                            ElementSize.Parse(valueList[0], context.UnitSize),
                            ElementSize.Parse(valueList[1], context.UnitSize));
                    }
                    else if (valueList.Length == 3)
                    {
                        convertedValue = new ElementMargin(
                            ElementSize.Parse(valueList[0], context.UnitSize),
                            ElementSize.Parse(valueList[1], context.UnitSize),
                            ElementSize.Parse(valueList[2], context.UnitSize));
                    }
                    else if (valueList.Length == 4)
                    {
                        convertedValue = new ElementMargin(
                            ElementSize.Parse(valueList[0], context.UnitSize),
                            ElementSize.Parse(valueList[1], context.UnitSize),
                            ElementSize.Parse(valueList[2], context.UnitSize),
                            ElementSize.Parse(valueList[3], context.UnitSize));
                    }
                    else
                    {
                        return(StringConversionFailed(value));
                    }

                    return(new ConversionResult(convertedValue));
                }
                catch (Exception e)
                {
                    return(ConversionFailed(value, e));
                }
            }
            else
            {
                // attempt to convert using system type converter
                try
                {
                    var convertedValue = System.Convert.ToInt32(value, CultureInfo.InvariantCulture);
                    return(new ConversionResult(convertedValue));
                }
                catch (Exception e)
                {
                    return(ConversionFailed(value, e));
                }
            }
        }