WPF,TextBox验证和仅绑定List <string>中的一项

时间:2018-06-22 06:41:23

标签: c# wpf validation data-binding

我正在尝试重构代码。目前,我的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答案,但我可能遗漏了一些东西。我正在努力实现的目标是否可能?甚至有道理吗?

0 个答案:

没有答案