6

クラスが IDataErrorInfo インターフェイスを実装し、このクラスがフォームへのバインディングの一部である場合、バインディングに関連付けられた検証を一時的に無効にする方法はありますか?

たとえば、クラスのプロパティに空の文字列を許可したくない場合、フォームが開くと、バインドされたコントロールにエラーがあるというフラグが立てられます (既定では赤い境界線が表示されます)。(ユーザーが何かを入力する前に)入力にエラーがあるとすぐにフラグを立てるのは少し不格好だと思います。これを回避する方法はありますか?

私は午後のほとんどを検索しましたが、すべての入力が有効になるまで送信ボタンを無効にする方法を考えているようです (これは実際には私が求めているものではありません)。

4

1 に答える 1

4

検証がいつ行われるかを制御する IDataErrorInfo を実装するクラスにフラグを設定します。

フラグが false の場合、IDataErrorInfo にエラーがないことを報告させます (つまり、null を返すなど)。

ビューの初期化中に、モデルで DoValidation フラグを false に設定し、ビューにデータへのすべてのバインディングを実行させます。

ビューが「ロード」された後、DoValidation フラグを true に設定します....その時点から...データを変更すると、値がまだ無効である場合にエラー インジケータが表示されます。

IDataErrorInfo コードを構造化する方法の詳細については、この別の投稿を参照してください。

于 2012-09-13T21:34:03.230 に答える