using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Text.RegularExpressions; using DataEntity.Share; using XImagingXhandler.XDAL; namespace XHandler.View.MethodProperty { public class AspirateValidationRule: ValidationRule { public string ValidateType { get; set; } public override ValidationResult Validate(object value, CultureInfo cultureInfo) { try { string valueString = value?.ToString().Trim(); if (ValidateType == "tbxCommandName")//命令名称 { string name = valueString; if (!string.IsNullOrEmpty(name)) { string errorMessage = string.Empty; return name.Length > 20 ? new ValidationResult(false, "名称过长,名称长度不能超过20") : new ValidationResult(true, null); } else { return new ValidationResult(false, "名称不允许为空"); } } else if (ValidateType == "tbxHeadType")//未选择枪头 { string ageString = valueString; if (string.IsNullOrEmpty(ageString)) { return new ValidationResult(false, "请先选择机械臂"); }else if(ageString.Equals("请选择")) { return new ValidationResult(false, "请先选择机械臂"); } } else if (ValidateType == "tbxWellPositionTips")//孔位验证 { string wellString = valueString; if (string.IsNullOrEmpty(wellString)) { return new ValidationResult(false, "请先选择孔位"); } else if (wellString.Contains("=")&&!wellString.Substring(0,1).Equals("=")) { return new ValidationResult(false, "输入的孔位,包含“=”时,格式应为:=i,i为命令前设置的变量名称"); } else if (wellString.Contains("&") && !wellString.Substring(0, 1).Equals("&")) { return new ValidationResult(false, "输入的孔位,包含“&”时,格式应为:&i,i为命令前设置的变量名称"); } else if (wellString.Contains(";") || wellString.Contains("|") || wellString.Contains("*") || wellString.Contains("!") || wellString.Contains("@") || wellString.Contains("#") || wellString.Contains("$") || wellString.Contains("%") || wellString.Contains("^") || wellString.Contains("(") || wellString.Contains(")") || wellString.Contains("{") || wellString.Contains("}") || wellString.Contains("[") || wellString.Contains("]") || wellString.Contains("?") || wellString.Contains("/") || wellString.Contains("\\") || wellString.Contains("~") || wellString.Contains("`") || wellString.Contains(":") || wellString.Contains("\"") || wellString.Contains("'") ) { return new ValidationResult(false, "输入的孔位,不能包含“;”、“|”、“*”、“!”、“@”、“#”、“$”、“%”、" + "“^”、“(”、“)”、“{”、“}”、“[”、“]”、“?”、“/”、“\\”、“~”、" + "“`”、“:”、“\"”、“'”"); } } else if (ValidateType == "tbxWellvolume")//每孔体积 { if (Shared.SoftwareInformation.software_device_number != DeviceCategory.DeviceHXFX) { string volumeString = valueString; Regex rg = new Regex(@"^[1-9]\\d*.\\d*|0\\.\\d*[1-9]\\d*$"); if (string.IsNullOrEmpty(volumeString)) { return new ValidationResult(false, "每孔体积值:[0,1000]之间"); } else if (rg.IsMatch(volumeString)) { return new ValidationResult(false, "每孔体积值:[0,1000]之间"); } else if (Convert.ToDouble(volumeString) < 0 || Convert.ToDouble(volumeString) > 1000) { return new ValidationResult(false, "[0,1000]之间"); } } else { string volumeString = valueString; Regex rg = new Regex(@"^[1-9]\\d*.\\d*|0\\.\\d*[1-9]\\d*$"); if (string.IsNullOrEmpty(volumeString)) { return new ValidationResult(false, "每孔体积值:[0,100000]之间"); } else if (rg.IsMatch(volumeString)) { return new ValidationResult(false, "每孔体积值:[0,100000]之间"); } else if (Convert.ToDouble(volumeString) < 0 || Convert.ToDouble(volumeString) > 100000) { return new ValidationResult(false, "[0,100000]之间"); } } } else if(ValidateType== "tbxMixVolume")//混合体积 { if (Shared.SoftwareInformation.software_device_number != DeviceCategory.DeviceHXFX) { string volumeString = valueString; Regex rg = new Regex(@"^[1-9]\\d*.\\d*|0\\.\\d*[1-9]\\d*$"); if (string.IsNullOrEmpty(volumeString)) { return new ValidationResult(false, "[0,1000]"); } else if (rg.IsMatch(volumeString)) { return new ValidationResult(false, "[0,1000]"); } else if (Convert.ToDouble(volumeString) < 0 || Convert.ToDouble(volumeString) > 1000) { return new ValidationResult(false, "[0,1000]"); } } else { string volumeString = valueString; Regex rg = new Regex(@"^[1-9]\\d*.\\d*|0\\.\\d*[1-9]\\d*$"); if (string.IsNullOrEmpty(volumeString)) { return new ValidationResult(false, "[0,50000]"); } else if (rg.IsMatch(volumeString)) { return new ValidationResult(false, "[0,50000]"); } else if (Convert.ToDouble(volumeString) < 0 || Convert.ToDouble(volumeString) > 50000) { return new ValidationResult(false, "[0,50000]"); } } } else if(ValidateType== "tbxMixDispenseSpeed") { string volumeString = valueString; Regex rg = new Regex(@"^[1-9]\\d*.\\d*|0\\.\\d*[1-9]\\d*$"); if (string.IsNullOrEmpty(volumeString)) { return new ValidationResult(false, "[1,10]"); } else if (rg.IsMatch(volumeString)) { return new ValidationResult(false, "[1,100]"); } else if (Convert.ToDouble(volumeString) < 1 || Convert.ToDouble(volumeString) > 100) { return new ValidationResult(false, "[1,100]"); } } return new ValidationResult(true, null); } catch (Exception e) { return new ValidationResult(false, e.Message); } } } }