1

わかりました、これは本当に簡単なことのはずですが、何かが足りないか、間違っています。

事実:

  1. Silverlight 4、Toolkit を使用し、DataForms / DataFields を使用しますが、検証の概要は使用しません。

  2. テンプレート化されたデータフォームを使用して、ユーザー名、名などの通常のフィールドに加えて、パスワードとパスワードの確認を含む単純な新規/編集ユーザー フォーム。

  3. 彼らが既存のユーザーを編集していて、パスワードフィールドが空白の場合は、それが通過するように検証したいと思います。それ以外の場合は、パスワードが同じであることを確認してください。(これは、私のモデルでクラス レベルのカスタム バリデーターを使用して既に動作しています。)

  4. #3 で検証が失敗した場合は、通常の手がかりを [パスワード] フィールドに入力して、ユーザーに警告します。(赤い枠、フィールドをクリックするとメッセージが表示されます)

#3までは今なら全部できます。しかし、エラーが発生した場合、エラーはフィールド エラーではなくフォーム エラーとして表示されます (検証はプロパティではなくクラスで行われるため、これは理にかなっています)。エラーを表示するためにフィールドをマークアップする方法が見つかりません。(設計上の理由から) 検証の概要を使用していないため、エラーがユーザーに表示されることはありません。

他の誰かがこれを行ったことがありますか、または検証サマリーを使用しないパスワード フィールドを含むデータ フォームの例を私に送ってくれますか?

私が現在見ている 2 つのオプションは、データ フィールドを自分で手動でマークすることです。または、検証の概要のようにエラーを繰り返さない完全な形式のエラーを表示する独自の方法を構築します。(つまり、フィールド エラーではなく、フォーム エラーのみを示す検証の概要が必要です。)

ありがとう

4

1 に答える 1

3

わかりました、私はこの問題を解決しました。いくつかのヒントを次に示します。

  1. 私の xaml の .cs コードでは、オブジェクトに対して TryValidate を呼び出してオブジェクトを検証していました。組み込みの DataForm コマンド ボタンを使用していない場合、これはお勧めできません。独自のカスタム ボタンを使用する場合は、必ず DataForm.ValidateItem() メソッドを呼び出して、すべてのエラーが ValidationSummary に正しく出力されるようにしてください。(私の場合、フォームに検証を行わせていなかったため、validationsummary に何も到達していませんでした。)

  2. オブジェクト レベルのエラーのみを表示するように ValidationSummary に指示できます。(プロパティ エラーは引き続き表示されますが、フィールドでのみ表示されます。) この割り当てを行うには、次のようにします。

    myDataform.ValidationSummary.Filter = ValidationSummaryFilters.ObjectErrors;

詳細については、ValidationSummaryFilters を参照してください。

これは私にとってはうまくいきました。私のオブジェクトの検証は、検証の概要に表示され、プロパティのエラーのみが表示されます。ここで必要なのは、自分の設計でより適切に機能するように、検証の概要のスタイルを設定することだけです。

于 2010-06-06T17:20:57.573 に答える