public override object ProvideValue(IServiceProvider serviceProvider) { IAmbientProvider ambient = serviceProvider.GetService(typeof(IAmbientProvider)) as IAmbientProvider; ambient.GetAllAmbientValues(null); return(new object()); }
public override object ProvideValue(IServiceProvider serviceProvider) { IXamlSchemaContextProvider service = serviceProvider.GetService(typeof(IXamlSchemaContextProvider)) as IXamlSchemaContextProvider; IAmbientProvider provider = serviceProvider.GetService(typeof(IAmbientProvider)) as IAmbientProvider; Debug.Assert(provider != null, "The provider should not be null!"); XamlSchemaContext schemaContext = service.SchemaContext; XamlType[] types = new XamlType [] { schemaContext.GetXamlType(typeof(ResourcesDict)) }; // ResourceDict is marked as Ambient, so the instance current being deserialized should be in this list. List <AmbientPropertyValue> list = provider.GetAllAmbientValues(null, false, types) as List <AmbientPropertyValue>; if (list.Count != 1) { throw new Exception("expected ambient property count == 1 but " + list.Count); } AmbientPropertyValue value = list [0]; ResourcesDict dict = value.Value as ResourcesDict; // For this example, we know that dict should not be null and that it is the only value in list. object result = dict [this.Key]; return(result); }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { IXamlSchemaContextProvider schemaContextProvider = (IXamlSchemaContextProvider)context.GetService(typeof(IXamlSchemaContextProvider)); IAmbientProvider ambientValueProvider = (IAmbientProvider)context.GetService(typeof(IAmbientProvider)); IXamlNamespaceResolver namespaceResolver = (IXamlNamespaceResolver)context.GetService(typeof(IXamlNamespaceResolver)); XamlTypeName typeName = XamlTypeName.Parse("TemplateClass2", namespaceResolver); XamlType xamlType = schemaContextProvider.SchemaContext.GetXamlType(typeName); XamlMember ambientProperty = xamlType.GetMember("Suffix"); IEnumerable <AmbientPropertyValue> propVals = ambientValueProvider.GetAllAmbientValues(null, ambientProperty); string s = (string)value; foreach (AmbientPropertyValue val in propVals) { s += (string)val.Value; } return(s); }
// Token: 0x06000865 RID: 2149 RVA: 0x0001B4E8 File Offset: 0x000196E8 private ResourceDictionary FindTheResourceDictionary(IServiceProvider serviceProvider, bool isDeferredContentSearch) { IXamlSchemaContextProvider xamlSchemaContextProvider = serviceProvider.GetService(typeof(IXamlSchemaContextProvider)) as IXamlSchemaContextProvider; if (xamlSchemaContextProvider == null) { throw new InvalidOperationException(SR.Get("MarkupExtensionNoContext", new object[] { base.GetType().Name, "IXamlSchemaContextProvider" })); } IAmbientProvider ambientProvider = serviceProvider.GetService(typeof(IAmbientProvider)) as IAmbientProvider; if (ambientProvider == null) { throw new InvalidOperationException(SR.Get("MarkupExtensionNoContext", new object[] { base.GetType().Name, "IAmbientProvider" })); } XamlSchemaContext schemaContext = xamlSchemaContextProvider.SchemaContext; XamlType xamlType = schemaContext.GetXamlType(typeof(FrameworkElement)); XamlType xamlType2 = schemaContext.GetXamlType(typeof(Style)); XamlType xamlType3 = schemaContext.GetXamlType(typeof(FrameworkTemplate)); XamlType xamlType4 = schemaContext.GetXamlType(typeof(Application)); XamlType xamlType5 = schemaContext.GetXamlType(typeof(FrameworkContentElement)); XamlMember member = xamlType5.GetMember("Resources"); XamlMember member2 = xamlType.GetMember("Resources"); XamlMember member3 = xamlType2.GetMember("Resources"); XamlMember member4 = xamlType2.GetMember("BasedOn"); XamlMember member5 = xamlType3.GetMember("Resources"); XamlMember member6 = xamlType4.GetMember("Resources"); XamlType[] types = new XamlType[] { schemaContext.GetXamlType(typeof(ResourceDictionary)) }; IEnumerable <AmbientPropertyValue> allAmbientValues = ambientProvider.GetAllAmbientValues(null, isDeferredContentSearch, types, new XamlMember[] { member, member2, member3, member4, member5, member6 }); List <AmbientPropertyValue> list = allAmbientValues as List <AmbientPropertyValue>; for (int i = 0; i < list.Count; i++) { AmbientPropertyValue ambientPropertyValue = list[i]; if (ambientPropertyValue.Value is ResourceDictionary) { ResourceDictionary resourceDictionary = (ResourceDictionary)ambientPropertyValue.Value; if (resourceDictionary.Contains(this.ResourceKey)) { return(resourceDictionary); } } if (ambientPropertyValue.Value is Style) { Style style = (Style)ambientPropertyValue.Value; ResourceDictionary resourceDictionary2 = style.FindResourceDictionary(this.ResourceKey); if (resourceDictionary2 != null) { return(resourceDictionary2); } } } return(null); }