WPF异步验证的最佳实践?

时间:2011-09-08 14:09:51

标签: wpf validation asynchronous

是否有关于在WPF中执行异步MVVM-ish验证的建议?已阅读有关INotifyDataErrorInfo的内容,但遗憾的是只有Silverlight可以使用。

感谢。

1 个答案:

答案 0 :(得分:1)

IDataErrorInfo是WPF的数据验证机制。你不喜欢微软的一致性吗? ;)

在ViewModel上实现IDataErrorInfo,如下所示:

public class MyViewModel : IDataErrorInfo
{
       public string Error
        {
            get { 
              return  GetErrorStringForThisViewModelInGeneral();
            }
        }

        public string this[string columnName]
        {
            get
            {
                string result = null;

                switch (columnName)
                {
                    case "Quantity":
                        if (Quantity <= 0)
                            result = "Quantity must be greater than 1.";
                    break;
                }
                return result;
            }

}

在属性内部(又名this [])验证,您可以使用EnterpriseLibrary中的验证器,使用Attributes的自定义验证器或您喜欢的任何内容。我只是展示了一个基本的实现,以帮助您入门。