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(); }
public object ConvertBack(object value, Type targetType) { if (targetType == null) { throw new ArgumentNullException(nameof(targetType)); } var valueConverter = ValueConverterProvider.Get <TValueConverter>(); var convertedValue = BindingValue.UnsetValue; if (TryGetParameter(out var parameter)) { try { convertedValue = valueConverter.ConvertBack(value, targetType, parameter, _converterCulture); } catch (Exception ex) { Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while converting \"{value ?? "null"}\" value from the target item to the source one " + $"using \"{TypeFormatter.FormatName<TValueConverter>()}\" value converter."); } } return(convertedValue); }
internal XamlServiceProvider(INode node, HydratationContext 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(); }
internal XamlServiceProvider(INode node, HydratationContext 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(); }
public XamlServiceProvider() { IValueConverterProvider = new ValueConverterProvider(); }