예제 #1
0
        public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
        {
            Condition condition = targetObject as Condition;

            if (condition == null)
            {
                throw new ArgumentNullException(nameof(targetObject));
            }
            if (eventArgs == null)
            {
                throw new ArgumentNullException(nameof(eventArgs));
            }

            if (eventArgs.Member.Name == "Property")
            {
                condition._unresolvedProperty          = eventArgs.Value;
                condition._serviceProvider             = eventArgs.ServiceProvider;
                condition._cultureInfoForTypeConverter = eventArgs.CultureInfo;

                eventArgs.Handled = true;
            }
            else if (eventArgs.Member.Name == "Value")
            {
                condition._unresolvedValue             = eventArgs.Value;
                condition._serviceProvider             = eventArgs.ServiceProvider;
                condition._cultureInfoForTypeConverter = eventArgs.CultureInfo;

                eventArgs.Handled = true;
            }
        }
예제 #2
0
        public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
        {
            var setter = targetObject as IterativeReaction;

            if (setter == null)
            {
                throw new ArgumentNullException(nameof(targetObject));
            }
            if (eventArgs == null)
            {
                throw new ArgumentNullException(nameof(eventArgs));
            }
            if (eventArgs.Member.Name == nameof(IterationTargetPropertyName))
            {
                //setter._unresolvedProperty = eventArgs.Value;
                //setter._serviceProvider = eventArgs.ServiceProvider;
                //setter._typeConverterCultureInfo = eventArgs.CultureInfo;
                eventArgs.Handled = true;
            }
            else
            {
                throw new NotImplementedException();
                //if (eventArgs.Member.Name != nameof(Value))
                //	return;
                //setter._unresolvedValue = eventArgs.Value;
                //setter._serviceProvider = eventArgs.ServiceProvider;
                //setter._typeConverterCultureInfo = eventArgs.CultureInfo;
                //eventArgs.Handled = true;
            }
        }
예제 #3
0
        /// <summary>Handles cases where a type converter provides a value for a property of a <see cref="T:System.Windows.Trigger" /> object.</summary>
        /// <param name="targetObject">The object where the type converter sets the value.</param>
        /// <param name="eventArgs">Data that is relevant for type converter processing.</param>
        // Token: 0x06000C85 RID: 3205 RVA: 0x0002F20C File Offset: 0x0002D40C
        public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
        {
            Trigger trigger = targetObject as Trigger;

            if (trigger == null)
            {
                throw new ArgumentNullException("targetObject");
            }
            if (eventArgs == null)
            {
                throw new ArgumentNullException("eventArgs");
            }
            if (eventArgs.Member.Name == "Property")
            {
                trigger._unresolvedProperty          = eventArgs.Value;
                trigger._serviceProvider             = eventArgs.ServiceProvider;
                trigger._cultureInfoForTypeConverter = eventArgs.CultureInfo;
                eventArgs.Handled = true;
                return;
            }
            if (eventArgs.Member.Name == "Value")
            {
                trigger._unresolvedValue             = eventArgs.Value;
                trigger._serviceProvider             = eventArgs.ServiceProvider;
                trigger._cultureInfoForTypeConverter = eventArgs.CultureInfo;
                eventArgs.Handled = true;
            }
        }
        public static void HandlePropertySet(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
        {
            if (targetObject == null)
            {
                throw new ArgumentNullException(nameof(targetObject));
            }
            if (eventArgs == null)
            {
                throw new ArgumentNullException(nameof(eventArgs));
            }

            var injectedTypeConverterAttributes = eventArgs.Member.UnderlyingMember
                                                  .GetCustomAttributes(typeof(InjectTypeConverterAttribute), true)
                                                  .OfType <InjectTypeConverterAttribute>()
                                                  .ToArray();

            if (injectedTypeConverterAttributes.Any())
            {
                if (injectedTypeConverterAttributes.Length > 1)
                {
                    throw new NotSupportedException("Multiple \'InjectTypeConverterAttribute\' attributes discovered.");
                }

                var injectedTypeConverterAttribute = injectedTypeConverterAttributes.Single();

                var converterType = Type.GetType(injectedTypeConverterAttribute.AssemblyQualifiedTypeName);
                if (converterType == null)
                {
                    throw new TypeLoadException("Injected type converter type cannot be resolved.");
                }

                var constructor = converterType.GetConstructor(new Type[] { });
                if (constructor == null)
                {
                    throw new NotSupportedException("Injected type converter constructor must have a parameterless constructor.");
                }

                var converterTypeInstance = constructor.Invoke(new object[] { });

                var converter = converterTypeInstance as TypeConverter;
                if (converter == null)
                {
                    throw new Exception($"Type \'{converterTypeInstance.GetType().Name}\' not valid. Must be of type \'TypeConverter\'.");
                }

                var convertedValue = converter.ConvertFrom(eventArgs.Value);

                if (convertedValue == null)
                {
                    throw new NullReferenceException(nameof(convertedValue));
                }

                var inv = eventArgs.Member.Invoker;
                inv.SetValue(targetObject, convertedValue);

                eventArgs.Handled = true;
            }
        }
예제 #5
0
 public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
 {
     // The DependencyProperty refered to by Property may depend on the value of TargetName,
     // but we don't know that yet, so defer loading Property until EndInit().
     if (eventArgs.Member.Name == "Property")
     {
         Setter setter = (Setter)targetObject;
         setter.propertyName    = (string)eventArgs.Value;
         setter.serviceProvider = eventArgs.ServiceProvider;
         eventArgs.Handled      = true;
     }
 }
예제 #6
0
        public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
        {
            var setter = targetObject as ReactiveSetter;

            if (setter == null)
            {
                throw new ArgumentNullException(nameof(targetObject));
            }
            if (eventArgs == null)
            {
                throw new ArgumentNullException(nameof(eventArgs));
            }

            if (eventArgs.Member.Name == nameof(Property))
            {
                setter._unresolvedProperty       = eventArgs.Value;
                setter._typeDescriptorContext    = eventArgs.ServiceProvider;
                setter._typeConverterCultureInfo = eventArgs.CultureInfo;
                eventArgs.Handled = true;
            }
            //else if (eventArgs.Member.Name == nameof(TargetName))
            //{
            //	var rootObjectProvider = (IRootObjectProvider)eventArgs.ServiceProvider
            //		.GetService(typeof(IRootObjectProvider));

            //	var rootFrameworkElement = rootObjectProvider.RootObject as FrameworkElement;
            //	if (rootFrameworkElement == null)
            //		throw new Exception("cannot find root fe");

            //	var i = rootFrameworkElement.FindName(eventArgs.Value.ToString());
            //}
            else
            {
                if (eventArgs.Member.Name != nameof(Value))
                {
                    return;
                }
                setter._unresolvedValue          = eventArgs.Value;
                setter._typeDescriptorContext    = eventArgs.ServiceProvider;
                setter._typeConverterCultureInfo = eventArgs.CultureInfo;
                eventArgs.Handled = true;
            }
        }
예제 #7
0
 // can be private.
 static void HandleTypeConverter(object o, XamlSetTypeConverterEventArgs a)
 {
 }
예제 #8
0
 public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
 {
     TypeConverterInjectionCore.HandlePropertySet(targetObject, eventArgs);
 }
 public static void ReceiveTypeConverter(object targetObject, XamlSetTypeConverterEventArgs eventArgs)
 {
 }
예제 #10
0
			// can be private.
			static void HandleTypeConverter (object o, XamlSetTypeConverterEventArgs a)
			{
			}