コード例 #1
0
ファイル: ContactSample.cs プロジェクト: devoft/Fluent-MVVM
        public static void Initialize()
        {
            RegisterProperty(x => x.FirstName)
            .Validate((t, v, vr) => vr.Error <NotNull>(v), notifyChangeOnValidationError: true)
            .Validate((t, v, vr) => vr.Error(string.IsNullOrWhiteSpace(v), "Name cannot be empty or whitespace"), notifyChangeOnValidationError: true)
            .Coerce(name => name.Trim(),
                    name => char.ToUpper(name[0]) + name.Substring(1).ToLower());

            RegisterProperty(x => x.LastName)
            .Validate((t, v, vr) => vr.Error(v != null && string.IsNullOrWhiteSpace(v), "LastName cannot be empty or whitespace"), notifyChangeOnValidationError: true)
            .Validate((t, v, vr) => vr.Warning(!FormatValidation.IsPersonName(v), "Last names are usually in the same format as first names"))
            .Coerce(name => name.Trim());

            RegisterProperty(x => x.FullName)
            .DependOn(nameof(FirstName), nameof(LastName))
            .Validate((t, v, vr) => vr.Error(string.IsNullOrWhiteSpace(v), "FullName cannot be empty or whitespace"));

            RegisterProperty(x => x.Age)
            .DependOn(x => x.Birthdate)
            .Validate((t, v, vr) => vr.Error(v < 0, "Age cannot be negative"));


            RegisterProperty(x => x.Email)
            .Validate((t, v, vr) => vr.Error(string.IsNullOrWhiteSpace(v), "Email cannot be empty or whitespace"), notifyChangeOnValidationError: true)
            .Validate((t, v, vr) => vr.Error(!FormatValidation.IsValidEmail(v), "Email is in invalid format"), notifyChangeOnValidationError: true)
            .Coerce(name => name.Trim());
        }