Ejemplo n.º 1
0
        /// <summary>
        /// Registers a dependency property.
        /// </summary>
        /// <typeparam name="T">The type of the property.</typeparam>
        /// <param name="name">The name of the property.</param>
        /// <param name="ownerType">The type that is registering the property.</param>
        /// <param name="defaultValue">The default value of the property.</param>
        /// <param name="validateValueCallback">A callback for validation/coercision of the property's value.</param>
        /// <param name="invalidationCallback">A callback to invalidate an object state after a modification of the property's value.</param>
        /// <param name="metadatas">The metadatas.</param>
        /// <returns></returns>
        public static PropertyKey <T> Register <T>(string name, Type ownerType, T defaultValue, ValidateValueCallback <T> validateValueCallback, ObjectInvalidationCallback <T> invalidationCallback, params PropertyKeyMetadata[] metadatas)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (ownerType == null)
            {
                throw new ArgumentNullException(nameof(ownerType));
            }
            if (metadatas == null)
            {
                throw new ArgumentNullException(nameof(metadatas));
            }

            return(RegisterCommon(DependencyPropertyKeyMetadata.Default, name, ownerType, defaultValue, validateValueCallback, invalidationCallback, metadatas));
        }
Ejemplo n.º 2
0
        // ReSharper disable once SuggestBaseTypeForParameter
        private static PropertyKey <T> RegisterCommon <T>(DependencyPropertyKeyMetadata dependencyPropertyMetadata, string name, Type ownerType, T defaultValue, ValidateValueCallback <T> validateValueCallback, ObjectInvalidationCallback <T> invalidationCallback, params PropertyKeyMetadata[] otherMetadatas)
        {
            var metadataList = new List <PropertyKeyMetadata> {
                dependencyPropertyMetadata, DefaultValueMetadata.Static(defaultValue)
            };

            if (validateValueCallback != null)
            {
                metadataList.Add(ValidateValueMetadata.New(validateValueCallback));
            }
            if (invalidationCallback != null)
            {
                metadataList.Add(ObjectInvalidationMetadata.New(invalidationCallback));
            }
            metadataList.AddRange(otherMetadatas);

            return(new PropertyKey <T>(name, ownerType, metadataList.ToArray()));
        }
Ejemplo n.º 3
0
 public static PropertyKey <T> Register <T>(string name, Type ownerType, T defaultValue, ObjectInvalidationCallback <T> invalidationCallback)
 {
     return(Register(name, ownerType, defaultValue, null, invalidationCallback));
 }
Ejemplo n.º 4
0
 public static ObjectInvalidationMetadata New <T>([NotNull] ObjectInvalidationCallback <T> invalidationCallback)
 {
     return(new ObjectInvalidationMetadata <T>(invalidationCallback));
 }