0

クラスの 1 つに IDataErrorInfo を実装して、そのクラスのプロパティを検証しました。プロパティは、wpf ユーザー コントロールのコントロールにバインドされています。検証は問題なく機能しますが、重大な欠陥が 1 つあります。

プロパティが更新される前に IDataErrorInfo メンバー public string this[string columnName] を呼び出しているように見えるため、変更されているプロパティの値を確認すると、入力したばかりの値ではなく、以前の値が含まれています。したがって、検証は常に一歩遅れています。これは、入力されたばかりの間違った値をチェックできないことを意味します。

プロパティが更新される前ではなく、更新された後にこの検証を強制的に呼び出す方法はありますか。UpdateSourceTrigger を LostFocus と PropertyChanged の両方に変更しようとしましたが、以前の値が異なる時点で報告されます。

ありがとう。

4

1 に答える 1

3

プロパティが割り当てられる前にプロパティ変更通知が送信されると、参照している動作を再現できます。

public string FirstName
{
    get { return _firstName; }
    set
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged
                (this, new PropertyChangedEventArgs("FirstName"));
        }
        _firstName = value;
    }
}

実際に値を設定した後で変更通知を呼び出すと、うまくいく可能性があります。そして、記録のために、私はこのようにプロパティ変更通知を呼び出しません!

于 2009-09-18T18:44:41.237 に答える