1

我有一个文本框,它的 Text 属性绑定到一个字符串(在视图模型中)

问题:我如何才能使该文本框中的内容正好是 10 个字符长(或仅用英文字母,只是一个示例)。

问题是它被直接写入 viewModel 的字符串变量。所以我唯一的想法是为此配备一个转换器。但即使转换器没有返回任何内容,我如何通知用户出现问题?(以“错误 - 长度!= 10”为例)

4

2 回答 2

3

我建议看看IDataErrorInfo界面。你可以让你的视图模型实现这个接口来定义验证逻辑。例如:

public class ViewModel : IDataErrorInfo
{
    public string MyText { get; set; }

    #region IDataErrorInfo Members

    public string Error
    {
        get { return null; }
    }

    public string this[string columnName]
    {
        get
        {
            if (columnName == "MyText")
            {
                if (MyText.Length != 10)
                {
                    return "Text should be exactly 10 letters.";
                }
            }

            return null;
        }
    }

    #endregion
}

一个很好的例子和进一步的定制可以在这里找到。

于 2012-11-03T14:47:43.857 回答
0

您必须使用WPF 数据验证

于 2012-11-03T14:20:23.880 回答