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);
|
}
|
}
|
}
|
}
|