尝试合并ValidatableBindableBase
以便于验证实施,我注意到它在Prism.Wpf
中不可用。
可在Prism.Windows
(Windows 10 UWP)中使用,但是......
我可以错过它(那时它在哪里)?
或者它真的没有在WPF
中实现(那么为什么)?
答案 0 :(得分:1)
Prism.Wpf中的验证是通过实现IDataErrorInfo
或INotifyDataErrorInfo
接口完成的。一个例子:
public abstract class DomainObject : INotifyPropertyChanged, INotifyDataErrorInfo
{
private ErrorsContainer<ValidationResult> errorsContainer =
new ErrorsContainer<ValidationResult>(
pn => this.RaiseErrorsChanged( pn ) );
public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;
public bool HasErrors
{
get { return this.ErrorsContainer.HasErrors; }
}
public IEnumerable GetErrors( string propertyName )
{
return this.errorsContainer.GetErrors( propertyName );
}
protected void RaiseErrorsChanged( string propertyName )
{
var handler = this.ErrorsChanged;
if (handler != null)
{
handler(this, new DataErrorsChangedEventArgs(propertyName) );
}
}
...
}
这也在Prism的documentation中解释。
那么为什么UWP不会那样工作呢?因为在UWP上,您无法访问这些界面,因此需要ValidatableBindableBase
和BindableValidator
类。如果由于某种原因,您喜欢这种方法,那么没有什么可以阻止您使用UWP类并将它们带到您的WPF解决方案中,所有代码都是open source。