SL - 整理 - 将验证做到资源文件中

来源:互联网 发布:java定义包的关键字 编辑:程序博客网 时间:2024/04/28 13:36
<TextBox AutomationProperties.AutomationId="PA_IssuerViews_Issuer_TextBox_Description"  Name="TextBoxDescription" Margin="280,20,0,0" Text="{Binding Path=CoreData.Description, Mode=TwoWay, Converter={StaticResource Validator}, ConverterParameter=0:AttributeIssuer_IssuerDescription, NotifyOnValidationError=True, ValidatesOnExceptions=True}"
                     Style="{StaticResource StyleIssuerDescription}"
                     ToolTipService.ToolTip="{Binding Source={StaticResource IssuerStringLibrary},Converter={StaticResource Localizer},ConverterParameter=lookup_tooltip_description}"
                     />

public class PropertyValidator : IValueConverter
    {
        private bool _suspended = false;

        public void SuspendValidations()
        {
            _suspended = true;
        }

        public void ResumeValidations()
        {
            _suspended = false;
        }

        public PropertyValidator()
        {
        }

        public const char Separator = ':';

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (!_suspended)
            {
                string key = (string)parameter;

                if (!string.IsNullOrEmpty(key) && null != value)
                {
                    string[] fields = key.Split(Separator);
                    int mandatory = 0;
                    if (fields.Length >= 2)
                    {
                        int.TryParse(fields[0], out mandatory);
                        string exceptionMessage = null;
                        if (fields.Length >= 3)
                        {
                            exceptionMessage = fields[2];
                        }
                        ResourceValidator.Validate(value != null ? value.ToString() : null, fields[1], mandatory == 0, exceptionMessage);
                    }
                }

               
            }

            return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string key = (string)parameter;
            string[] fields = key.Split(Separator);
            if (fields[1] == "PrivilegeAssignment_StartDateTime" || fields[1] == "PrivilegeAssignment_EndDateTime")
            {
                return DateTime.Parse(value.ToString());
            }
            if (value.Equals("Select ..."))
            {
                return string.Empty;
            }
            return value;
           
        }

        #endregion
    }
0 0
原创粉丝点击