You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

64 lines
1.8 KiB

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Windows.Controls;
using System.Windows.Data;
namespace ECMonitor.MVVM
{
public class VerifyRule : ValidationRule
{
public VerifyRuleType Type { get; set; } = VerifyRuleType.Unknown;
public List<object> WhatList { get; set; }
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string strVal = value != null ? (string)value : string.Empty;
ValidationResult vRet = Type switch
{
VerifyRuleType.NotEmpty => VerifyNotEmpty(strVal),
VerifyRuleType.IP => VerifyIP(strVal),
VerifyRuleType.Unknown => VerifyUnkown(strVal),
VerifyRuleType.Temp => VerifyTemp(strVal),
_ => VerifyUnkown(strVal),
};
WhatList = new();
WhatList.Add(new { Type, vRet.IsValid, value, strVal, vRet });
return vRet;
}
#region Verify Region
private static ValidationResult VerifyNotEmpty(string value)
{
bool ret = !string.IsNullOrWhiteSpace(value);
string errMsg = "不能为空!";
return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg);
}
private static ValidationResult VerifyIP(string value)
{
bool ret = VerifyUnit.CheckIp(value);
string errMsg = "IP格式错误!";
return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg);
}
private static ValidationResult VerifyTemp(string value)
{
bool ret = !string.IsNullOrWhiteSpace(value);
string errMsg = "临时错误!";
return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg);
}
private static ValidationResult VerifyUnkown(string value)
{
bool ret = false;
string errMsg = "未知错误!";
return ret ? ValidationResult.ValidResult : new ValidationResult(false, errMsg);
}
#endregion Verify Region
}
}