我正在尝试重构代码。目前,我的Validator类拥有10个不同的字符串,每个字符串代表不同TextBox的内容。
这是我的C#代码的一部分(可以正常使用)
// The string contained in the TextBox.
private string MasterPointName => null;
// Other strings...
....
// The validator.
public string this[string columnName]
{
string result = null;
get
{
switch (columnName)
{
case "MasterPointName":
if (string.IsNullOrEmpty(this.MasterPointName))
{
result = "This field must not be left empty!";
}
break;
// Other case statements...
...
}
return result;
}
}
这是上述文本框之一的XAML:
<TextBox x:Name="tbMaster" Validation.Error="ValidationError" Text="{Binding UpdateSourceTrigger=PropertyChanged, Path=MasterPointName, ValidatesOnDataErrors=true, NotifyOnValidationError=true}" />
现在,我想将所有字符串放在List<string>
中,并引用case语句中的列表项:
private readonly List<string> points = new List<string>
{
"masterPointName",
...
};
// The validator.
public string this[string columnName]
{
string result = null;
get
{
switch (columnName)
{
case "masterPointName":
if (string.IsNullOrEmpty(this.points[0]))
{
result = "This field must not be left empty!";
}
break;
// Other case statements...
...
}
return result;
}
}
更新的XAML(使用Path=points[0]
):
<TextBox x:Name="tbMaster" Validation.Error="ValidationError" Text="{Binding UpdateSourceTrigger=PropertyChanged, Path=points[0], ValidatesOnDataErrors=true, NotifyOnValidationError=true}" />
我以为是有效的,指的是this答案,但我可能遗漏了一些东西。我正在努力实现的目标是否可能?甚至有道理吗?