示例#1
0
        static GridUnitType ConvertibleKindToGridUnitType(ConvertibleKind kind)
        {
            Contract.Requires((int)kind >= ConvertibleKind_GridUnitFirst);
            Contract.Requires((int)kind <= ConvertibleKind_GridUnitLast);
            Contract.Ensures((int)Contract.Result <GridUnitType>() >= GridUnitType_First);
            Contract.Ensures((int)Contract.Result <GridUnitType>() <= GridUnitType_Last);

            return((GridUnitType)((int)kind - ConvertibleKind_GridUnitFirst + GridUnitType_First));
        }
示例#2
0
        static GridUnitType ConvertibleKindToGridUnitType(ConvertibleKind kind)
        {
            Contract.Requires((int)kind >= ConvertibleKind_GridUnitFirst);
            Contract.Requires((int)kind <= ConvertibleKind_GridUnitLast);
            Contract.Ensures((int)Contract.Result<GridUnitType>() >= GridUnitType_First);
            Contract.Ensures((int)Contract.Result<GridUnitType>() <= GridUnitType_Last);

            return (GridUnitType)((int)kind - ConvertibleKind_GridUnitFirst + GridUnitType_First);
        }
示例#3
0
 static object FromIConvertible(double value, ConvertibleKind kind)
 {
     switch (kind)
     {
         case ConvertibleKind.OneWay:
             return value;
         case ConvertibleKind.GridUnitAuto:
         case ConvertibleKind.GridUnitPixel:
         case ConvertibleKind.GridUnitStar:
             return new GridLength(value, ConvertibleKindToGridUnitType(kind));
         default:
             throw new ArgumentOutOfRangeException("kind");
     }
 }
示例#4
0
        static object FromIConvertible(double value, ConvertibleKind kind)
        {
            switch (kind)
            {
            case ConvertibleKind.OneWay:
                return(value);

            case ConvertibleKind.GridUnitAuto:
            case ConvertibleKind.GridUnitPixel:
            case ConvertibleKind.GridUnitStar:
                return(new GridLength(value, ConvertibleKindToGridUnitType(kind)));

            default:
                throw new ArgumentOutOfRangeException("kind");
            }
        }
示例#5
0
        static IConvertible ToIConvertible(object obj, IFormatProvider provider, out ConvertibleKind kind)
        {
            kind = ConvertibleKind.OneWay;

            if (obj == null)
            {
                return(null);
            }

            try
            {
                var convertible = obj as IConvertible;
                if (convertible != null)
                {
                    return(convertible);
                }

                if (obj is GridLength)
                {
                    var gl = (GridLength)obj;
                    kind = GridUnitTypeToConvertibleKind(gl.GridUnitType);
                    return(gl.Value);
                }

                var formattable = obj as IFormattable;
                if (formattable != null)
                {
                    return(formattable.ToString(null, provider));
                }

                return(obj.ToString());
            }
            catch
            {
                return(null);
            }
        }
示例#6
0
        static IConvertible ToIConvertible(object obj, IFormatProvider provider, out ConvertibleKind kind)
        {
            kind = ConvertibleKind.OneWay;

            if (obj == null)
                return null;

            try
            {
                var convertible = obj as IConvertible;
                if (convertible != null)
                    return convertible;

                if (obj is GridLength)
                {
                    var gl = (GridLength)obj;
                    kind = GridUnitTypeToConvertibleKind(gl.GridUnitType);
                    return gl.Value;
                }

                var formattable = obj as IFormattable;
                if (formattable != null)
                    return formattable.ToString(null, provider);

                return obj.ToString();
            }
            catch
            {
                return null;
            }
        }