IDataErrorInfoを実装する前に、clrプロパティを更新する前ではなく、どのように検証しますか?

StackOverflow https://stackoverflow.com/questions/1431723

  •  07-07-2019
  •  | 
  •  

質問

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

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

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

ありがとう。

役に立ちましたか?

解決

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

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

実際に値を設定した後に変更通知を呼び出して、トリックを行うことができます。また、記録のために、このようなプロパティ変更通知を呼び出しません!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top