WPF异步验证的最佳做法?
答
IDataErrorInfo是WPF的数据验证机制。你不喜欢微软的一致性吗? ;)
这样对您的视图模型实现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;
}
}
里面的属性(又名这个[])验证的,你可以在EnterpriseLibrary,使用属性自定义验证,或任何使用验证你喜欢。我只是展示了一个基本的实现来帮助你开始。
对不起,我指的是异步验证 - 即通过Web服务验证数量。 – Alberto
要使验证异步,您应该旋转一个线程来执行验证(以避免挂起应用程序),然后当结果返回时,对要验证的属性(例如数量)执行NotifyPropertyChanged。当通知发生时,WPF将重新验证该字段,并且您应该能够设置一个条件,以便它不会远程重新验证(因为自上次验证以来该值未更改)。 –
这就是我的想法 - 耻辱它需要这样一个样板代码:( – Alberto