Example #1
0
        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();
		}
Example #4
0
        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();
        }
Example #5
0
 public XamlServiceProvider()
 {
     IValueConverterProvider = new ValueConverterProvider();
 }
		public XamlServiceProvider()
		{
			IValueConverterProvider = new ValueConverterProvider();
		}