internal XamlServiceProvider(INode node, HydrationContext context) { object targetObject; if (node != null && node.Parent != null && context.Values.TryGetValue(node.Parent, out targetObject)) { IProvideValueTarget = new XamlValueTargetProvider(targetObject, node, context, null); } if (context != null) { IRootObjectProvider = new XamlRootObjectProvider(context.RootElement); } if (node != null) { IXamlTypeResolver = new XamlTypeResolver(node.NamespaceResolver, XamlParser.GetElementType, context?.RootElement?.GetType().GetTypeInfo().Assembly); Add(typeof(IReferenceProvider), new ReferenceProvider(node)); } var xmlLineInfo = node as IXmlLineInfo; if (xmlLineInfo != null) { IXmlLineInfoProvider = new XmlLineInfoProvider(xmlLineInfo); } IValueConverterProvider = new ValueConverterProvider(); }
internal XamlServiceProvider(INode node, HydrationContext context) { object targetObject; if (node != null && node.Parent != null && context.Values.TryGetValue(node.Parent, out targetObject)) { IProvideValueTarget = new XamlValueTargetProvider(targetObject, node, context, null); } if (context != null) { IRootObjectProvider = new XamlRootObjectProvider(context.RootElement); } if (node != null) { IXamlTypeResolver = new XamlTypeResolver(node.NamespaceResolver, XamlParser.GetElementType, context?.RootElement.GetType().GetTypeInfo().Assembly); var enode = node; while (enode != null && !(enode is IElementNode)) { enode = enode.Parent; } if (enode != null) { INameScopeProvider = new NameScopeProvider { NameScope = (enode as IElementNode).Namescope } } ; } var xmlLineInfo = node as IXmlLineInfo; if (xmlLineInfo != null) { IXmlLineInfoProvider = new XmlLineInfoProvider(xmlLineInfo); } IValueConverterProvider = new ValueConverterProvider(); }