バリデーションの実装を簡単にするために組み込んでみ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のドキュメントでも説明されています。
では、なぜ UWP はそのように機能しないのでしょうか? UWP ではこれらのインターフェイスにアクセスできないためValidatableBindableBase
、BindableValidator
クラスが必要でした。何らかの理由でこのアプローチが気に入った場合、UWP クラスを取得して WPF ソリューションに組み込むことを妨げるものは何もありません。すべてのコードはオープン ソースです。