Exemplo n.º 1
0
 /// <summary>
 /// Creates a new XamlObjectServiceProvider instance.
 /// </summary>
 public XamlObjectServiceProvider(XamlObject obj)
 {
     if (obj == null)
     {
         throw new ArgumentNullException("obj");
     }
     XamlObject = obj;
     Resolver   = new XamlTypeResolverProvider(obj);
 }
Exemplo n.º 2
0
 public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
 {
     if (value == null)
     {
         return(null);
     }
     if (value is string)
     {
         XamlTypeResolverProvider xamlTypeResolver =
             (XamlTypeResolverProvider)context.GetService(typeof(XamlTypeResolverProvider));
         if (xamlTypeResolver == null)
         {
             throw new XamlLoadException("XamlTypeResolverProvider not found in type descriptor context.");
         }
         XamlPropertyInfo prop = xamlTypeResolver.ResolveProperty((string)value);
         if (prop == null)
         {
             throw new XamlLoadException("Could not find property " + value + ".");
         }
         XamlDependencyPropertyInfo depProp = prop as XamlDependencyPropertyInfo;
         if (depProp != null)
         {
             return(depProp.DependencyProperty);
         }
         FieldInfo field = prop.TargetType.GetField(prop.Name + "Property",
                                                    BindingFlags.Public | BindingFlags.Static);
         if (field != null && field.FieldType == typeof(DependencyProperty))
         {
             return((DependencyProperty)field.GetValue(null));
         }
         throw new XamlLoadException("Property " + value + " is not a dependency property.");
     }
     else
     {
         return(base.ConvertFrom(context, culture, value));
     }
 }