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)); }
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); }
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"); } }
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"); } }
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); } }
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; } }