Example #1
0
        /// <summary>
        /// 在给定 Object 的一组属性值的情况下重新创建该对象
        /// </summary>
        /// <param name="context"></param>
        /// <param name="propertyValues"></param>
        /// <returns></returns>
        public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues)
        {
            if (propertyValues == null)
            {
                throw new ArgumentNullException("NullParameter");
            }

            TypeXmlFont font = new TypeXmlFont();

            font.FontFamily = propertyValues["FontFamily"].ToString();
            font.Size       = (float)propertyValues["Size"];
            font.Style      = (FontStyle)Enum.Parse(typeof(FontStyle), propertyValues["Style"].ToString());
            return(font);
        }
Example #2
0
        /// <summary>
        /// 将给定值对象转换为指定的类型
        /// </summary>
        /// <param name="context"></param>
        /// <param name="culture"></param>
        /// <param name="value"></param>
        /// <param name="destinationType"></param>
        /// <returns></returns>
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            TypeXmlFont font = value as TypeXmlFont;

            if (font != null)
            {
                // 转成String
                if ((destinationType == typeof(string)))
                {
                    return(font.ToString());
                }
            }
            // 基类的ConvertTo()必须调用
            return(base.ConvertTo(context, culture, value, destinationType));
        }
Example #3
0
        /// <summary>
        /// 将给定值转换为此转换器的类型
        /// </summary>
        /// <param name="context"></param>
        /// <param name="culture"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            // 从String转换
            string fontValue = (string)value;

            if (fontValue != null)
            {
                try
                {
                    TypeXmlFont newFont   = new TypeXmlFont();
                    string[]    fontParts = fontValue.Split(new char[] { ',' });
                    newFont.FontFamily = fontParts[0].Trim();
                    newFont.Size       = (float)Convert.ToDouble(fontParts[1].Trim());
                    newFont.Style      = (FontStyle)Enum.Parse(typeof(FontStyle), fontParts[2].Trim());
                    return(newFont);
                }
                catch
                {
                    throw;
                }
            }
            return(base.ConvertFrom(context, culture, value));
        }