public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value != null)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
XamlSchemaContext xamlSchemaContext =
RequireService<IXamlSchemaContextProvider>(context).SchemaContext;
Baml2006SchemaContext schemaContext = xamlSchemaContext as Baml2006SchemaContext;
if (schemaContext == null)
{
throw new InvalidOperationException(SR.Get(SRID.ExpectedBamlSchemaContext));
}
IXamlObjectWriterFactory objectWriterFactory =
RequireService<IXamlObjectWriterFactory>(context);
IProvideValueTarget ipvt =
RequireService<IProvideValueTarget>(context);
IRootObjectProvider rootObjectProvider =
RequireService<IRootObjectProvider>(context);
ResourceDictionary dictionary = ipvt.TargetObject as ResourceDictionary;
if (dictionary == null)
{
throw new InvalidOperationException(SR.Get(SRID.ExpectedResourceDictionaryTarget));
}
Stream stream = value as Stream;
if (stream == null)
{
byte[] bytes = value as byte[];
if (bytes != null)
{
stream = new MemoryStream(bytes);
}
}
if (stream == null)
{
throw new InvalidOperationException(SR.Get(SRID.ExpectedBinaryContent));
}
//
DeferrableContent deferrableContext = new DeferrableContent(stream, schemaContext,
objectWriterFactory, context, rootObjectProvider.RootObject);
return deferrableContext;
}
return base.ConvertFrom(context, culture, value);
}