コード例 #1
0
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            IAmbientProvider ambient = serviceProvider.GetService(typeof(IAmbientProvider)) as IAmbientProvider;

            ambient.GetAllAmbientValues(null);
            return(new object());
        }
コード例 #2
0
ファイル: TestedTypes.cs プロジェクト: Benrnz/Portable.Xaml
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        // 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);
        }