2

バリデーションの実装を簡単にするために組み込んでみValidatableBindableBaseましたが、 では利用できないことに気付きましたPrism.Wpf

Prism.Windows(Windows 10 UWP)で利用できますが...

それで、私はそれを逃した可能性がありますか(それではどこにありますか)?

それとも本当に実装されていないのWPFですか(なぜ)?

4

1 に答える 1

2

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 ではこれらのインターフェイスにアクセスできないためValidatableBindableBaseBindableValidatorクラスが必要でした。何らかの理由でこのアプローチが気に入った場合、UWP クラスを取得して WPF ソリューションに組み込むことを妨げるものは何もありません。すべてのコードはオープン ソースです。

于 2016-11-21T14:59:49.110 に答える