WPF如何过滤数据绑定元素? MVVM相关

时间:2012-11-03 14:15:57

标签: .net wpf validation mvvm

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

问题:如何制作它,以便在该文本框中写入的内容正好是10个字符长(或者只有英文字母,只是一个示例)。

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

2 个答案:

答案 0 :(得分:3)

我建议您查看IDataErrorInfo interface。 您可以让viewmodel实现此接口以定义验证逻辑。例如:

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
}

可以找到一个很好的例子和进一步的自定义here

答案 1 :(得分:0)

您必须使用WPF Data Validation