public override object ConvertFrom(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, object value) { String s = value as string; if (null == s) { throw new ArgumentException("XAML can only convert from Strings"); } ColorElement2 e = new ColorElement2(); IXamlSchemaContextProvider schemaContextProvider = (IXamlSchemaContextProvider)typeDescriptorContext.GetService(typeof(IXamlSchemaContextProvider)); IAmbientProvider iAmbient = (IAmbientProvider)typeDescriptorContext.GetService(typeof(IAmbientProvider)); XamlType ambientLabel = schemaContextProvider.SchemaContext.GetXamlType(typeof(DerivedFromHasAmbientLabel)); XamlMember label = ambientLabel.GetMember("Num"); AmbientPropertyValue apVal = iAmbient.GetFirstAmbientValue(null, label); if (apVal == null) { e.ColorName = s; } else { e.ColorName = s + "-" + apVal.Value.ToString(); } return(e); }
public override object ConvertTo(ITypeDescriptorContext typeDescriptorContext, CultureInfo cultureInfo, object value, Type destinationType) { ColorElement2 e = value as ColorElement2; return(e.ColorName); }