ValidatableBindableBase 没有在 Prism.Wpf 中实现吗?为什么?
Is ValidatableBindableBase not implemented in Prism.Wpf? why?
试图合并 ValidatableBindableBase
以便于验证实施,我注意到它在 Prism.Wpf
中不可用。
它在 Prism.Windows
(Windows 10 UWP)中可用,但是...
我会不会错过了它(那它在哪里)?
还是WPF
中真的没有实现(那为什么呢)?
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.
试图合并 ValidatableBindableBase
以便于验证实施,我注意到它在 Prism.Wpf
中不可用。
它在 Prism.Windows
(Windows 10 UWP)中可用,但是...
我会不会错过了它(那它在哪里)?
还是WPF
中真的没有实现(那为什么呢)?
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.