예제 #1
0
 internal static LabelValidationMetadata ParseMetadata(string bindingPath, object entity)
 {
     if (entity != null && !string.IsNullOrEmpty(bindingPath))
     {
         PropertyInfo property = GetProperty(GetCustomOrCLRType(entity), bindingPath);
         if (property != null)
         {
             var validationMetadata = new LabelValidationMetadata();
             foreach (object obj in property.GetCustomAttributes(false))
             {
                 if (obj is RequiredAttribute)
                 {
                     validationMetadata.IsRequired = true;
                 }
                 else
                 {
                     var displayAttribute = obj as DisplayAttribute;
                     if (displayAttribute != null)
                     {
                         validationMetadata.Name    = displayAttribute.GetDescription();
                         validationMetadata.Caption = displayAttribute.GetName();
                     }
                 }
             }
             if (validationMetadata.Caption == null)
             {
                 validationMetadata.Caption = property.Name;
             }
             return(validationMetadata);
         }
     }
     return((LabelValidationMetadata)null);
 }
예제 #2
0
 internal static LabelValidationMetadata ParseMetadata(string bindingPath, object entity)
 {
     if (entity != null && !string.IsNullOrEmpty(bindingPath))
     {
         PropertyInfo property = GetProperty(GetCustomOrCLRType(entity), bindingPath);
         if (property != null)
         {
             var validationMetadata = new LabelValidationMetadata();
             foreach (object obj in property.GetCustomAttributes(false))
             {
                 if (obj is RequiredAttribute)
                 {
                     validationMetadata.IsRequired = true;
                 }
                 else
                 {
                     var displayAttribute = obj as DisplayAttribute;
                     if (displayAttribute != null)
                     {
                         validationMetadata.Name = displayAttribute.GetDescription();
                         validationMetadata.Caption = displayAttribute.GetName();
                     }
                 }
             }
             if (validationMetadata.Caption == null)
                 validationMetadata.Caption = property.Name;
             return validationMetadata;
         }
     }
     return (LabelValidationMetadata)null;
 }
예제 #3
0
 internal static void SetValidationMetadata(DependencyObject inputControl, LabelValidationMetadata value)
 {
     if (inputControl == null)
     {
         throw new ArgumentNullException("inputControl");
     }
     inputControl.SetValue(LabelValidationHelper.ValidationMetadataProperty, (object)value);
 }
예제 #4
0
        internal static LabelValidationMetadata ParseMetadata(FrameworkElement element, bool forceUpdate, out object entity, out BindingExpression bindingExpression)
        {
            entity            = (object)null;
            bindingExpression = (BindingExpression)null;
            if (element == null)
            {
                return((LabelValidationMetadata)null);
            }
            if (!forceUpdate)
            {
                LabelValidationMetadata validationMetadata = element.GetValue(LabelValidationHelper.ValidationMetadataProperty) as LabelValidationMetadata;
                if (validationMetadata != null)
                {
                    return(validationMetadata);
                }
            }
            foreach (FieldInfo fieldInfo in element.GetType().GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy))
            {
                if (fieldInfo.FieldType == typeof(DependencyProperty))
                {
                    BindingExpression bindingExpression1 = element.GetBindingExpression((DependencyProperty)fieldInfo.GetValue((object)null));
                    if (bindingExpression1 != null && bindingExpression1.ParentBinding != null && bindingExpression1.ParentBinding.Path != null)
                    {
                        entity = bindingExpression1.DataItem ?? element.DataContext;
                        if (entity != null)
                        {
                            if (bindingExpression1.ParentBinding.Mode == BindingMode.TwoWay)
                            {
                                bindingExpression = bindingExpression1;
                                break;
                            }
                            else if (bindingExpression == null || string.Compare(bindingExpression1.ParentBinding.Path.Path, bindingExpression.ParentBinding.Path.Path, StringComparison.Ordinal) < 0)
                            {
                                bindingExpression = bindingExpression1;
                            }
                        }
                    }
                }
            }

            if (bindingExpression == null)
            {
                return(null);
            }

            LabelValidationMetadata validationMetadata1 = ParseMetadata(bindingExpression.ParentBinding.Path.Path, entity);

            element.SetValue(ValidationMetadataProperty, (object)validationMetadata1);
            return(validationMetadata1);
        }
예제 #5
0
        private void LoadMetadata(bool forceUpdate)
        {
            LabelValidationMetadata validationMetadata = null;
            object            entity;
            BindingExpression bindingExpression;

            if (!string.IsNullOrEmpty(PropertyPath))
            {
                validationMetadata = LabelValidationHelper.ParseMetadata(PropertyPath, DataContext);
            }
            else if (Target != null)
            {
                validationMetadata = LabelValidationHelper.ParseMetadata(Target, forceUpdate, out entity, out bindingExpression);
            }
            if (ValidationMetadata == validationMetadata)
            {
                return;
            }

            ValidationMetadata = validationMetadata;
            if (ValidationMetadata != null)
            {
                string caption = ValidationMetadata.Caption;
                if (caption != null && _canContentUseMetaData)
                {
                    SetContentInternally(caption);
                }
            }
            else if (_canContentUseMetaData)
            {
                SetContentInternally(null);
            }
            if (_isRequiredOverridden || (_requiredHasBeenSet && !_requiredSetByMetadata))
            {
                return;
            }
            bool flag = ValidationMetadata != null && ValidationMetadata.IsRequired;

            _requiredSetByMetadata = true;
            SetValue(IsRequiredProperty, flag);
        }
예제 #6
0
 internal static void SetValidationMetadata(DependencyObject inputControl, LabelValidationMetadata value)
 {
     if (inputControl == null)
         throw new ArgumentNullException("inputControl");
     inputControl.SetValue(LabelValidationHelper.ValidationMetadataProperty, (object)value);
 }
예제 #7
0
파일: Label.cs 프로젝트: gertjvr/ModernWPF
        private void LoadMetadata(bool forceUpdate)
        {
            LabelValidationMetadata validationMetadata = null;
            object entity;
            BindingExpression bindingExpression;

            if (!string.IsNullOrEmpty(PropertyPath))
                validationMetadata = LabelValidationHelper.ParseMetadata(PropertyPath, DataContext);
            else if (Target != null)
                validationMetadata = LabelValidationHelper.ParseMetadata(Target, forceUpdate, out entity, out bindingExpression);
            if (ValidationMetadata == validationMetadata)
                return;

            ValidationMetadata = validationMetadata;
            if (ValidationMetadata != null)
            {
                string caption = ValidationMetadata.Caption;
                if (caption != null && _canContentUseMetaData)
                    SetContentInternally(caption);
            }
            else if (_canContentUseMetaData)
                SetContentInternally(null);
            if (_isRequiredOverridden || (_requiredHasBeenSet && !_requiredSetByMetadata))
                return;
            bool flag = ValidationMetadata != null && ValidationMetadata.IsRequired;
            _requiredSetByMetadata = true;
            SetValue(IsRequiredProperty, flag);
        }